首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

repeater中删除行异常

2012-03-09 
repeater中删除行错误我想在repeater中实现行的删除,但是一当即删除按钮就出现下面的问题,请各位高手帮我

repeater中删除行错误
我想在repeater中实现行的删除,但是一当即删除按钮就出现下面的问题,请各位高手帮我看下,十分感谢!

“/Repeater”应用程序中的服务器错误。
--------------------------------------------

回发或回调参数无效。在配置中使用   <pages   enableEventValidation= "true "/>   或在页面中使用   <%@   Page   EnableEventValidation= "true "   %>   启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用   ClientScriptManager.RegisterForEventValidation   方法来注册回发或回调数据以进行验证。  

界面设计:
  <asp:Repeater   ID= "Repeater1 "   runat= "server "   OnItemCommand= "Repeater1_ItemCommand ">
                      <HeaderTemplate>
                          <table   border= "1 ">
                                <tr>
                                      <td> <b> 删除 </b> </td>
                                      <td> <b> 序号 </b> </td>
                                      <td> <b> 姓名 </b> </td>
                                      <td> <b> 科目 </b> </td>
                                      <td> <b> 成绩 </b> </td>
                                </tr>
                    </HeaderTemplate>
                         
                    <ItemTemplate>
                          <tr>
                                <td> <asp:Button   ID= "button1 "   runat= "server "   CommandName= "Delete "     Text= "删除 "   /> </td>
                                <td>   <%#   Eval( "xuhao ")   %>   </td>
                                <td>   <%#   Eval( "name ")   %>   </td>
                                <td>   <%#   Eval( "subject ")   %>   </td>
                                <td>   <%#   Eval( "grade ")   %>   </td>
                          </tr>


                    </ItemTemplate>
                   
                   
                    <FooterTemplate>
                          </table>
                    </FooterTemplate>

                </asp:Repeater>

代码:
        SqlDataAdapter   da   =   new   SqlDataAdapter();
        SqlCommand   cmd   =   new   SqlCommand();
        DataView   dv   =   new   DataView();
        DataSet   ds   =   new   DataSet();
        SqlConnection   conn   =   new   SqlConnection();

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                string   conn1   =   "Data   Source=lgb;Integrated   Security=SSPI;Initial   Catalog=test; ";
                conn   =   new   SqlConnection(conn1);
                GetSource();
                if   (!IsPostBack)
                {
                        BindData();
                }
        }

        private   void   GetSource()
        {
                conn.Open();
                string   sql   =   "select   *   from   chengji ";
                da   =   new   SqlDataAdapter(sql,   conn);
                da.Fill(ds);
                dv   =   ds.Tables[0].DefaultView;
                BindData();
                conn.Close();
        }

        private   void   BindData()
        {
                Repeater1.DataSource   =   dv;
                Repeater1.DataBind();
        }
        protected   void   Repeater1_ItemCommand(object   source,   RepeaterCommandEventArgs   e)
        {
                if   (e.CommandName   ==   "Delete ")
                {
                        conn.Open();
                        string   xuhao=e.CommandArgument.ToString();


                        string   sqldel   =   "delete   from   chengji   where   xuhao= ' "   +   xuhao   +   " ' ";
                        cmd   =   new   SqlCommand(sqldel,   conn);
                        cmd.ExecuteNonQuery();
                        BindData();
                        conn.Close();
                }
        }

[解决办法]
DataBinder.Eval(Container.DataItem, "字段名 ")
[解决办法]
DataBinder.Eval(Container.DataItem, "字段名 ")

这个是03的写法


05用你自己的就可以了

[解决办法]
aspx: <asp:LinkButton ID= "btnDelete " CssClass= "blueFont " CommandArgument= <%# Eval( "orderNo ") %> OnCommand= "btnDelete_Click " OnClientClick= "return confirm( '你确定要删除这条记录? '); " runat= "server "> 删除 </asp:LinkButton>

cs: protected void btnDelete_Click(object sender, CommandEventArgs e)
{
string orderNo = e.CommandArgument.ToString();
try
{
删除操作
}
catch (Exception ex)
{
......
}
}

[解决办法]
把button需要验证设置成false

<asp:Button ID= "button1 " runat= "server " CommandName= "Delete " Text= "删除 " CausesValidation= "false "/> </td>

或者
<%@ Page EnableEventValidation= "false " %>


[解决办法]
还发现个问题
if (e.CommandName == "Delete ")
{
conn.Open();
string xuhao=e.CommandArgument.ToString();

你的 <asp:Button ID= "button1 " runat= "server " CommandName= "Delete " Text= "删除 " /> </td>
都没有设置CommandArgument,上面的代码能通过吗?
[解决办法]
设置
<%@ Page EnableEventValidation= "false " %>

热点排行