在中继器中找不到链接按钮

本文关键字:链接 按钮 找不到 中继器 | 更新日期: 2023-09-27 18:06:01

我在中继器中有一个链接按钮,有几个绑定字段。我试图到达我可以在数据绑定后设置按钮onClientClick的地方,但每次我试图访问链接按钮时,我一直得到Null返回。

我已经看了这里涉及中继器和对照器的每一个问题,但还没能弄清楚。

    <asp:Repeater ID="DailyRepeater" OnItemCommand="DailyRepeater_ItemCommand" runat="server">
                    <HeaderTemplate>
                        <tr>
                            <td class="coltitle">
                                Time
                            </td>
                            <td class="coltitle">
                                Activity
                            </td>
                            <td class="coltitle">
                                Hours
                            </td>
                        </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr class="evenrow">
                            <td>
                                <%# Eval("StartTime","{0:HH:mm}") %>-<%# Eval("EndTime","{0:HH:mm}") %>
                            </td>
                            <td>
                                <%# Eval("Description") %>
                            </td>
                            <td>
                                <%# Eval("Hours","{0:0.0}") %>
                            </td>
                            <td>
                                   <asp:LinkButton runat="server" CausesValidation="false" ID="editbutton" Text="Edit">Edit</asp:LinkButton>
                            </td>
                        </tr>
                    </ItemTemplate>

.aspx.cs

    protected void DailyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        LinkButton myButton = (LinkButton)e.Item.FindControl("editbutton");
        myButton.OnClientClick = (popupWindow.GetTargetPopupCode("URL");
    }

根据我所读到的,我应该能够使用RepeaterItemEventargs到达按钮。但是我似乎在这里找不到。我想到的另一件事是,绑定没有发生的时候,这发生了(这是没有意义的,因为这是一个数据绑定事件),但由于某种原因,e回来了。item有一个null的dataItem和一个-1的itemIndex…

我只是真的很困惑,失去了任何帮助,我将不胜感激。

谢谢!

在中继器中找不到链接按钮

听起来您没有防范项目类型。通常,它会触发页眉、所有项,然后是页脚。您需要这样做:

 if(e.Item.ItemType == ItemType.Item || e.Item.ItemType == ItemType.AlternatingItem)
 {
      LinkButton myButton = (LinkButton)e.Item.FindControl("editbutton");
      myButton.OnClientClick = (popupWindow.GetTargetPopupCode("URL");
 }

为什么不在sender对象上设置属性呢?

sender.OnClientClick = //whatever//