我有一个带有项目列表的转发器,它通过C#/ sql和数据绑定获取数据。 然后我想在项目列表中添加onclick javascript到'deleteNewsButton'。 我猜我必须使用OnItemDataBound?
继承人我的转发器:
<asp:Repeater ID="newsListRepeater" runat="server" OnItemDataBound="deleteConfirm_Databound">
<ItemTemplate>
<tr>
<td><%# Eval("id") %></td>
<td><%# Eval("title") %></td>
<td><%# Eval("tags") %></td>
<td><%# Eval("author") %></td>
<td style="width:100px;"><%# DataBinder.Eval(Container.DataItem, "time", "{0:dd/MM/yyyy}") %></td>
<td style="width:110px;">
<asp:Button ID="editNewsButton" runat="server" OnCommand="editNewsButton_Click" CommandArgument='<%# Eval("id") %>' Text="Rediger" />
<asp:Button ID="deleteNewsButton" runat="server" CommandArgument='<%# Eval("id") %>' Text="Slet" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
编辑: 我如何将代码后面的参数绑定到我的'deleteNewsButton'控制器。 它需要从代码后面完成......
答案 0 :(得分:1)
添加一个onclientclick事件,例如
<asp:Button ID="deleteNewsButton"
OnClientClick="return confirm('Do you really want to Delete this record ?')"
runat="server" CommandArgument='<%# Eval("id") %>' Text="Slet" />
答案 1 :(得分:1)
我相信对于转发器项数据绑定事件,您需要使用RepeaterItemEventArgs而不是RepeaterItem
protected void deleteConfirm_Databound(object sender, RepeaterItem e)
成为
protected void deleteConfirm_Databound(object sender, RepeaterItemEventArgs e)
您可能还需要对该控件进行空检查:
LinkButton button = (LinkButton)e.FindControl("deleteNewsButton");
if(button != null) {
button.Attributes.Add("onclick", "javascript:return " +
"confirm('Er du sikker på du vil slette: " + DataBinder.Eval(e.DataItem, "id") + "')");
}
您也可以考虑为确认框创建一个常用的javascript函数,然后只需从按钮中调用它。
ASPX
<script type="text/javascript">
function confirmFunction(id)
{
return confirm('Er du sikker på du vil slette: ' + id);
}
</script>
代码隐藏
LinkButton button = (LinkButton)e.FindControl("deleteNewsButton");
if(button != null) {
button.Attributes.Add("onclick", "javascript:return confirmFunction(" + DataBinder.Eval(e.DataItem, "id") + ");");
}