我怎么能把我的OnItemDataBound c#代码在我的代码后面,并将其绑定到asp:repeater
本文关键字:我的 代码 绑定 asp repeater OnItemDataBound 怎么能 | 更新日期: 2023-09-27 18:04:34
我是asp.net的初学者,这是我第一次遇到asp重复器。它是。ascx页面中的一个重复器控件,我想将它绑定到c#代码
.ascx页:
<asp:Repeater ID="relatedFilesRepeater" runat="server" OnItemDataBound="RelatedFilesRepeater_ItemDataBound">
<ItemTemplate>
<tr>
<td width="30%">
<asp:Label ID="fileNameLabel" runat="server" />
</td>
<td>
<asp:ImageButton ID="signatureButton" runat="server" ImageUrl="~/Images/Icons/16x16/_Base Image/Symbol Check 2.png" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
在我的。ascx页面的顶部,我已经在c#中声明了我的OnItemDatabound
函数,如下所示:
<script language="C#" runat="server">
void RelatedFilesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
...
}
效果很好。但是将c#代码留在.ascx文件中既不美观也不干净我怎么能把我的OnItemDataBound
函数在我的代码后面,并与asp中继器绑定。因为我试图简单地复制粘贴我的c#代码在代码后面的文件,它不工作。
不能访问标签控件的原因是它在中继器中。因此,为了访问它们,您可以使用FindControl()
var myLabel = (Label)FindControl("YouLabelId");
//Do Some Work
这将适用于<asp:Repeater />
进一步阅读此处
您不能直接访问这些标签。原因是它们被封装在repeater中,所以首先你必须找到当前的repeater row,然后使用row。Findcontrol并给出CTRL id:
void RelatedFilesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Label fileNameLabel= (Label)e.Item.FindControl("fileNameLabel");
ImageButton signatureButton= (ImageButton)e.Item.FindControl("signatureButton");
}