0

如何访问 datalist 中的 asp 控件。例如,我想但目前不能通过内联代码或代码隐藏文件访问 HyperLink 控件或 ImageButton 控件。

<asp:DataList ID="DataList1" runat="server" AlternatingItemStyle-CssClass="altArtStyle">
        <HeaderTemplate>
            <table>
                <tr>
                    <td>
                        <asp:HyperLink ID="lnkTitle" runat="server" NavigateUrl="Default.aspx?order_by=title&direction=ASC" >

                        Title
                        </asp:HyperLink> <asp:ImageButton id="imgbtnTitle" src="/_images/hover-down.gif" runat="server"/>
                    </td>

                </tr>
            </table>
        </HeaderTemplate>
4

4 回答 4

1

通常,您需要在 DataListItem 对象上调用 FindControl,才能找到特定行上的控件。在您的示例中,FindControl 仅适用于标题行,如下例所示:

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
    If e.Item.ItemType = ListItemType.Header Then
        Dim btn As ImageButton = e.Item.FindControl("imgbtnTitle")
        If btn IsNot Nothing Then
            ' Do stuff here.
        End If
    End If
End Sub
于 2009-09-21T19:44:50.353 回答
1

你可以对标签和超链接做同样的事情

private void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
        {
            ImageButton imgbutton = (ImageButton)e.Item.FindControl("imgbtnTitle");
            imgbutton.ToolTip = "abc";
        }
    }
于 2012-04-20T06:56:35.430 回答
0

这取决于。例如,如果您想在运行时更改标头,在对象绑定事件之一中,您会为此 datalist 标头执行类似操作,在超链接上执行 findcontrol 并使用该引用执行此操作...

于 2009-09-21T16:03:44.607 回答
0

是的,您可以使用绑定的 Datalist Item Data 访问 datalist 中的 asp 控件

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        HyperLink TitleLink = (HyperLink)e.Item.FindControl("lnkTitle");
    }

}
于 2013-03-08T07:02:32.867 回答