2012-01-05 4 views
2

コードビハインドから適切にアクセスできる「orderReceiptTable」というListViewがあります。その中には、 "orgName"と呼ばれるリテラルがありますが、これは明らかに組織の名前を入れたいと思っています。FindControlを使用してリテラルをターゲットにする

多くの検索の後、FindControlが正しい動作のコースであると判断されました。おそらく私は不適切にFindControlを使用していますが、実際にはリテラルコントロールを「見つける」ことができません。

コードブロックがページロードで呼び出されています。

私のコードは次のようなになります。ここでは

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マークアップを含めることはできますか?また、上記のコードがどこに呼び出されているかを示すことができますか?それは答えに影響を与える可能性があります。 –

+1

'ListView'にテンプレートがありますか?もしそうなら、 'myOrgName = CType(orderReceiptTable.Controls(0).FindControl(" orgName ")、Literal)'を試してください。インデックスとして '0'を入れました。テンプレートのレベルが1つしかないと仮定します。 – keyboardP

+0

私の質問にマークアップが追加されました。私はあなたの提案keyboardPを編集しているかどうか確認するために作業しています。お知らせいたします。 – BehemothDan

答えて

1

テンプレート内のコントロールだけにいくつかのデータを結合した後に作成されますそれ。これで、ListView.Controlsプロパティを介してアクセスできます。

この前の回答は役立つかもしれない:Find control in ListView EmptyDataTemplate

関連する問題