2012-01-05 5 views
2

У меня есть ListView, называемый «orderReceiptTable», который я могу правильно получить из кода Behind. Внутри него есть буквал, называемый «orgName», который я, очевидно, хотел бы заполнить именем организации.Использование FindControl для таргетинга на Literal

После долгих поисков было определено, что FindControl был правильным курсом действий. Возможно, я неправильно использую FindControl, но я не могу на самом деле «найти» свой контрольный элемент Literal.

Кодовый блок вызывается в режиме загрузки страницы.

Мой код выглядит так:

Dim orgNameString As String = getOrganizationName.getOrgName(organizationID).ToString() 

    Dim myOrgName As Literal = FindControl("orgName") 
    myOrgName = CType(orderReceiptTable.FindControl("orgName"), Literal) 

    If Not (myOrgName Is Nothing) Then 
     Response.Write("I found the control!") 
     myOrgName.Text = orgNameString 
    End If 

Вот наценка в файле .aspx:

<asp:ListView ID="orderReceiptTable" runat="server"> 
      <LayoutTemplate> 
       <div runat="server" id="itemPlaceholder" /> 
      </LayoutTemplate> 

      <EmptyDataTemplate> 
       <tr id="noDataDiv" runat="server"> 
        <td class="sub" ID="itemPlaceholder" runat="server"> 
         No order data was returned. 
        </td> 
       </tr> 
      </EmptyDataTemplate> 

      <ItemTemplate> 
       <div id="itemPlaceholder" runat="server" style="border:solid 1px #000000; width:250px; float:left; padding:10px; border:solid 2px #1664B1;"> 
        <div>Organization Name: <asp:Literal runat="server" ID="orgName"></asp:Literal></div>        
       </div> 
      </ItemTemplate>   
    </asp:ListView> 
+2

Вы можете включить HTML-разметку для ListView, чтобы мы могли понять, как это настроить? Кроме того, можете ли вы указать, где вызывается вышеуказанный код? Это может повлиять на ответ. –

+1

У вас есть шаблон в вашем «ListView»? Если да, попробуйте 'myOrgName = CType (orderReceiptTable.Controls (0) .FindControl (" orgName "), Literal)'. Я поставил '0' в качестве индекса asI предполагаю только один уровень шаблона, если он есть. – keyboardP

+0

Я добавил разметку на мой вопрос, если это поможет. Я работаю с вашим предложением keyboardP, чтобы узнать, работает ли это с некоторым редактированием. Я дам вам знать. – BehemothDan

ответ

1

Элементы управления внутри шаблона будет создана только после связывания некоторых данных Это. Затем вы сможете получить к нему доступ через свойство ListView.Controls.

Этот предыдущий ответ может помочь: Find control in ListView EmptyDataTemplate