我把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处理函数也没有执行。请问这个问题如何解决

解决方案 »

  1.   

    这是个简单的问题,但涉及复杂的可能性。引发的原因很简单:
    ASP.NET认为这是一个不合法的PostBack,因为引发PostBack的那个控件(例如你按了的按钮)的ID在当前控件树上找不到。然而为什么控件书上找不到,这可能是个很复杂的问题:
    可能和你在什么时候绑定有关,还可能与控件自动命名有关。我假设你的问题是遇到自动命名的问题,所以建议你检查一遍你的整个Page,把里面所有的控件都手动加上ID,不要让ASP.NET帮你自动命名。
      

  2.   

    try:把绑定DataList前加上if(!this.IsPostBack)
    {
     绑定list
    }
      

  3.   

    这个 应该是 因为 你再 客户端
    使用js操作了 页面对象...
    比如你使用js脚本 添加了 DropDownlist控件的项后服务器 端 是无法 获取到 新的 下拉项的这个时候就会出现 PostBack的验证错误
    你需要在页面顶端 代码中 添加 <pages enableEventValidation="true"/>