我怎么能把我的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#代码在代码后面的文件,它不工作。

我怎么能把我的OnItemDataBound c#代码在我的代码后面,并将其绑定到asp:repeater

不能访问标签控件的原因是它在中继器中。因此,为了访问它们,您可以使用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");
}