我是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)
{
...
}
效果很好。但是在.ascx中留下c#代码并不美观
如何将我的OnItemDataBound
函数放在我的代码中并将其与asp转发器绑定。因为我试图简单地在代码隐藏文件中复制粘贴我的c#代码,但它无法正常工作。
答案 0 :(得分:0)
您无法访问标签控件的原因是因为它位于转发器内部。因此,要访问它们,您可以使用FindControl()
var myLabel = (Label)FindControl("YouLabelId");
//Do Some Work
这将适用于<asp:Repeater />
进一步阅读 here
答案 1 :(得分:0)
您无法直接访问这些标签。原因是它们被包含在转发器中,所以首先你必须找到正确的转发器行,然后使用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");
}