如何将我的OnItemDataBound c#代码放在我的代码中并将其绑定到asp:repeater

时间:2015-07-24 12:50:42

标签: c# asp.net asprepeater

我是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#代码,但它无法正常工作。

2 个答案:

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