在转发器中找不到链接按钮

时间:2011-08-17 21:07:47

标签: c# asp.net

我在转发器中有一个带有几个数据绑定字段的链接按钮。我试图在数据绑定之后到达我可以在onClient上设置按钮的位置,但是每当我尝试访问链接按钮时,我都会继续返回Null。

我在这里查看了涉及转发器和控制器的每个问题,并且无法弄明白。

.aspx

    <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回来e.Item有一个null的dataItem和itemIndex为-1 ...

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

谢谢!

2 个答案:

答案 0 :(得分:5)

听起来你没有防范物品类型。通常,它会触发标题,所有项目,然后是页脚。你需要这样做:

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

答案 1 :(得分:0)

为什么不在sender对象上设置属性,如下所示:

sender.OnClientClick = //whatever//