2009-09-21 85 views
0

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

<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> 

回答

0

这取决于。例如,如果你想在运行时改变头部,在其中一个对象绑定事件中,你可以为这个数据头部头部做一些事情,在超链接上做一个findcontrol,并用那个引用做这个...

+0

你能给我一个简短的代码示例吗?我试图找到控制,但得到了投诉'对象引用未设置为对象的实例'。下面是我在绑定数据集后使用的代码。 昏暗imgbtnTitle作为的ImageButton =的FindControl( “imgbtnTitle”) 如果imgbtnTitle.ImageUrl = “/_images/hover-down.gif” 那么 imgbtnTitle.ImageUrl = “/_images/hover.gif” elseif的imgbtnTitle.ImageUrl =“ /_images/hover.gif“然后 imgbtnTitle.ImageUrl =”/_images/hover-down.gif“ End If – contactmatt 2009-09-21 16:23:42

+0

看起来像Jason的覆盖。我只补充说你可能需要使用CType来施放控件。看看:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx – Steve 2009-09-21 21:01:03

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 
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"; 
     } 
    } 
0

是这样做,你可以访问内部的ASP控制通过使用Datalist Item Data绑定的数据列表

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"); 
    } 

}