我在转发器中有一个带有几个数据绑定字段的链接按钮。我试图在数据绑定之后到达我可以在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 ...
我真的很困惑,失去了任何帮助将不胜感激。
谢谢!
答案 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//