日期:2014-05-17  浏览次数:20490 次

数据源有些行状态为deleted,如何将gridview中的行与数据行对应起来??
    private void BindData()
    {
        GridView1.DataSource = DT;
        GridView1.DataBind();
    }
在DT里面,有些行状态是deleted,这样GridView1里面是不会显示这些行的。
现在在GridView1里修改了某些行的值,要在RowUpdating事件里把这些值回写到DT中,如何确定修改的行是DT里面哪一行??
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        DataTable dt = DT;
        GridViewRow row = GridView1.Rows[e.RowIndex];
        string strText1 = ((TextBox)row.FindControl("TextBox1")).Text;
        string strText2 = ((TextBox)row.FindControl("TextBox2")).Text;
        string strText3 = ((TextBox)row.FindControl("TextBox3")).Text;
        string strText4 = ((TextBox)row.FindControl("TextBox4")).Text;
        dt.Rows[e.RowIndex]["Col1"] = strText1;
        dt.Rows[e.RowIndex]["Col2"] = strText2;
        dt.Rows[e.RowIndex]["Col3"] = strText3;
        dt.Rows[e.RowIndex]["Col4"] = strText4;
        GridView1.EditIndex = -1;
        BindData();
    }
上面这段代码是错误的,因为 row.RowIndex != e.RowIndex。
想不出方法,特上CSDN求救
gridview RowUpdating

------解决方案--------------------
设置gridview的key为字段id
GridView1.DataKeys[row.RowIndex].Value得到id值,你就可以根据id去获取对应的记录