使用FindControl定位文字

时间:2012-01-05 00:11:49

标签: asp.net vb.net findcontrol

我有一个名为“orderReceiptTable”的ListView,我可以从Code Behind正确访问它。其中有一个名为“orgName”的文字,我显然希望用一个组织的名字来填充。

经过大量搜索后,确定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>   

1 个答案:

答案 0 :(得分:1)

模板内的控件只有在将一些数据绑定到模板后才会创建。然后,您就可以通过ListView.Controls属性访问它。

之前的回答可能有所帮助:Find control in ListView EmptyDataTemplate