浅谈Repeater及DataList内的Button控件事件
有时我们会要在Repeater及DataList内部加一二个按纽,可如果我们也按照平常那样双击按纽的话,出现的不是类似这种
protected void Button1_Click(object sender,EventArgs e)
{
}
如果你是第一次碰到这种情况是不是就不知道怎样写代码了呢?其实像下面代码的功能与上面一样,也是写OnClick事件。
{
}
这只是简单的解决一个数据控件内一个按纽的情况,可如果里面有几个不同的按纽,我们又应该如何去实现它们不同的功能 呢?其实也是很简单的,我简单的贴一些代码出来,我想你就能明白。
前台.aspx:
<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="1">LinkButton</asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="2">LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
后台.cs:
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "1")
{
Response.Write("d");
}
if (e.CommandName == "2")
{
Response.Write("dd");
}
}
看明白了吧?其实很简单的,简单的判断一下。如果细心的你,你一定看到,上面的代码中使用的是LinkButton而不是Button,如果你上面的功能做出来了的话,你可以试一下,在数据控件添加Button会出现下面错误:
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
具体原因的话,本人能力有限就不得而知。 好像ImageButton也不行的,也会出现上面的错误。如果有高手兄弟看到这篇文章的话,能麻烦指导一下。本人在做项目碰到这个问题,问了很多兄弟才搞定它,本来的代码基本正确,只可惜数据控件的ID搞错了,调试了好久最后在Jonllen兄弟的帮助下才发现这个问题,看来自己真的太粗心了。在此也感谢Jonllen兄弟,他还帮我解决很多问题了。