我把DataList做成了用户控件,DataList模板里有一个按钮Delete
为该用户控件定义了一个事件DeleteStore。
在DataList的ItemCommand事件处理函数中,判断是不是按钮Delete被按下,若是,触发DeleteStore事件
结果,在调用页面,点击Delete按钮产生错误“invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation= "true "/> in configuration or <%@ Page EnableEventValidation= "true " %> in a page 。。。
我把调用页面的enableEventValidation设置成false,没有错误了,但是单击Delete按钮,没有触发DeleteStore事件,单步进去,发现ItemCommand处理函数也没有执行。
请问这个问题如何解决
------解决方案--------------------------------------------------------
这是个简单的问题,但涉及复杂的可能性。
引发的原因很简单:
ASP.NET认为这是一个不合法的PostBack,因为引发PostBack的那个控件(例如你按了的按钮)的ID在当前控件树上找不到。
然而为什么控件书上找不到,这可能是个很复杂的问题:
可能和你在什么时候绑定有关,还可能与控件自动命名有关。我假设你的问题是遇到自动命名的问题,所以建议你检查一遍你的整个Page,把里面所有的控件都手动加上ID,不要让ASP.NET帮你自动命名。
------解决方案--------------------------------------------------------
try:把绑定DataList前加上if(!this.IsPostBack){ 绑定list}