在页面第一次载入的时候,用了(!Page.IsPostBack),所有datagrid显示都是正确的。
但是一旦点击编辑后,出现奇怪情况,有些数据竟然跑到标题上去了,而且所点的那个行的EditItemIndex也不正确。
点击前如图:http://www.showbuy.cn/111.gif点击后如图:http://www.showbuy.cn/222.gif

解决方案 »

  1.   

    ^_^,是你的索引错位了,参考如下,再做修改试试
    private void DataGrid1_UpdateCommand(object source, DataGridCommandEventArgs e)
    {
    SqlConnection con=new SqlConnection("server=localhost;database=userdb;uid=sa;pwd=1");
    con.Open();
    SqlTransaction tran=con.BeginTransaction();//定义
    try
    {
    TextBox userid=(TextBox)e.Item.Cells[2].Controls[0];
    TextBox username=(TextBox)e.Item.Cells[3].Controls[0];
    TextBox sex=(TextBox)e.Item.Cells[4].Controls[0];
    TextBox age=(TextBox)e.Item.Cells[5].Controls[0];
    TextBox job=(TextBox)e.Item.Cells[6].Controls[0];
    TextBox address=(TextBox)e.Item.Cells[7].Controls[0];
    TextBox tel=(TextBox)e.Item.Cells[8].Controls[0];
    sql="update usertbl set";
    sql=sql+" userid='"+userid.Text.Trim()+"',";
    sql=sql+" username='"+username.Text.Trim()+"',";
    sql=sql+" sex='"+sex.Text.Trim()+"',";
    sql=sql+" age='"+age.Text.Trim()+"',";
    sql=sql+" job='"+job.Text.Trim()+"',";
    sql=sql+" address='"+address.Text.Trim()+"',";
    sql=sql+" tel='"+tel.Text.Trim()+"'";
    SqlCommand com=new SqlCommand(sql,con);
    com.Transaction=tran;//事务开始
    com.ExecuteNonQuery();
    tran.Commit();//提交
    DataGrid1.EditItemIndex=-1;
    }
      

  2.   

    这个可能是你的HTML 排版的问题,你看看页面上有没有规定什么宽,高的。
      

  3.   

    有高没有设置,宽度设置为100%,
    另外,如果我把每个datagrid分开写成自定义控件的话,还是要出现这样的问题,现在真不知道怎么解决了,帮帮忙啊
      

  4.   

    个人看法:
    点击编辑之后页面会刷新一次,会先执行Page_load函数,如果你用了
    数据绑定在(!Page.IsPostBack)里,则不会执行里面的数据绑定,然后
    再执行编辑函数,很有可能再次绑定时与原来绑定的内容不同你把(!Page.IsPostBack)删除看
      

  5.   

    把(!Page.IsPostBack)删除 当然可以了,不过数据怎么更新呢