DataRow[] mDrs=mDt.GetChanges(DataRowState.Modified);  //mDt是你的DataTable名

解决方案 »

  1.   

    this.DataGrid1.Items[this.DataGrid1.EditItemIndex].Cells[0].Text;
      

  2.   

    to  CMIC(大象):
    提示错误:
    无法将类型“System.Data.DataTable”隐式转换为“System.Data.DataRow[]”
    to  thinkingforever(盼星星)
    这个样子得到的是DataGrid里的数据,但是,实际上这个时候Datagrid里的数据是空的
      

  3.   

    DataRow[] mDrs=mDt.GetChanges(DataRowState.Modified);
      

  4.   

    to   laggar(蛮):
    怎么更新?不好意思,小弟是菜鸟
      

  5.   

    要想不变宽最好是把每一列设置成模板列,然后设置每一个模板列的 EditTemplate,编辑时的样式,在编辑界面右键点击datagrid,设置模板列,然后把编辑状态的textbox宽度调整到适合的大小,再设置其ID属性,然后就可以了
    取得编辑框里的数据,可以这样写,比如取得第一列的编辑框里的数据
    ((TextBox)datagrid.Items[datagrid.EditItemIndex].Cells[0].FindControl("模板列里编辑框的ID")).Text
      

  6.   

    DataTable mDrs=mDt.GetChanges(DataRowState.Modified);  
    在Page_Load中给datagird增加一个style:
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!IsPostBack)
    { }
    DataGrid1.Style.Add("TABLE-LAYOUT","fixed");  //表的宽度和列的宽度固定,不随单元格中内容而改变
    }
      

  7.   

    to xxdneu(xxd)
    模板列怎么和数据库里的字段关联?to bitsbird(一瓢.net)
    宽度固定的问题解决了,多谢你了
    使用
    DataTable mDrs=mDt.GetChanges(DataRowState.Modified);  后提示System.NullReferenceException: 未将对象引用设置到对象的实例。
      

  8.   

    我把关键代码贴出来,大家一起研究研究private void Page_Load(object sender, System.EventArgs e)
    {
    if (!IsPostBack)
    {
    sqlConnection1.Open();
    sqlDataAdapter1.Fill(objDataset, "address1");
    DataGrid1.DataSource=objDataset.Tables["address1"].DefaultView;
    DataGrid1.DataBind();
    sqlConnection1.Close();
    // 在此处放置用户代码以初始化页面
    }
    DataGrid1.Style.Add("TABLE-LAYOUT","fixed");
    }
    //这个是增加行的按钮
    private void Button1_Click(object sender, System.EventArgs e)
    {
    object[] rowValues={"","",""};
    sqlConnection1.Open();
    sqlDataAdapter1.Fill(objDataset, "address1");
    objDataset.Tables["address1"].Rows.Add(rowValues);
    count = objDataset.Tables["address1"].Rows.Count;
    DataGrid1.EditItemIndex = count-1;
    DataGrid1.DataSource=objDataset.Tables["address1"].DefaultView;
    DataGrid1.DataBind();
    sqlConnection1.Close();

    }/*这个是保存的按钮,点击这个按钮需要把刚才在编辑框里输入的值提取出来,然后用insert语句保存在数据库,最后重绑定dagagrid,现在的问题是无法得到编辑框的ID,不知道怎么更新dataset。
    private void Button2_Click(object sender, System.EventArgs e)
    {

    }
      

  9.   

    如果不用模板列,而全用绑定列的话,你可以用
    ((TextBox)DataGrid.Items[DataGrid1.EditItemIndex].Cells[列索引].Controls[0]).Text来取得编辑框的值
    private void Button2_Click(object sender, System.EventArgs e)
    {
       string v1=((TextBox)DataGrid.Items[DataGrid1.EditItemIndex].Cells[0].Controls[0]).Text ;//第一列的值
       string v2=((TextBox)DataGrid.Items[DataGrid1.EditItemIndex].Cells[1].Controls[0]).Text ;//第二列的值
       ...

    }
      

  10.   

    ok,搞定,等会儿把代码整理贴出来,方便大家学习,然后结贴
    多谢以下两位
    bitsbird(一瓢.net) 
    xxdneu(xxd) 另外还有一个web中DataGrid行选择的问题,各位帮忙
    http://expert.csdn.net/Expert/topic/3063/3063649.xml?temp=.2016565
      

  11.   

    关键代码如下private void Page_Load(object sender, System.EventArgs e)
    {
    if (!IsPostBack)
    {
    sqlConnection1.Open();
    sqlDataAdapter1.Fill(objDataset, "address1");
    DataGrid1.DataSource=objDataset.Tables["address1"].DefaultView;
    DataGrid1.DataBind();
    sqlConnection1.Close();
    // 在此处放置用户代码以初始化页面
    }
                               //这一行把datagrid的编辑行宽度固定了
    DataGrid1.Style.Add("TABLE-LAYOUT","fixed");
    }
    //这个是增加行的按钮
    private void Button1_Click(object sender, System.EventArgs e)
    {
    object[] rowValues={"","",""};
    sqlConnection1.Open();
    sqlDataAdapter1.Fill(objDataset, "address1");
    objDataset.Tables["address1"].Rows.Add(rowValues);
    count = objDataset.Tables["address1"].Rows.Count;
    DataGrid1.EditItemIndex = count-1;
    DataGrid1.DataSource=objDataset.Tables["address1"].DefaultView;
    DataGrid1.DataBind();
    sqlConnection1.Close();

    }//这个是保存编辑行的按钮,把数据insert到数据库后重新加载页面
    private void Button2_Click(object sender, System.EventArgs e)
    {
    if(-1 == DataGrid1.EditItemIndex)
    {
    Response.Redirect("erro.aspx");
    }
    string sqlComm = "insert into address values(";
    sqlDataAdapter1.Fill(objDataset, "address1");
    int columnCount = objDataset.Tables["address1"].Columns.Count;
    for(int i=0;i<columnCount-1;i++)
    {
    sqlComm+= "'"+((TextBox)DataGrid1.Items[DataGrid1.EditItemIndex].Cells[i].Controls[0]).Text+"'"+",";
    }
    sqlComm+= "'"+((TextBox)DataGrid1.Items[DataGrid1.EditItemIndex].Cells[columnCount-1].Controls[0]).Text+"'";
    sqlComm+=")";
    //Label1.Text = sqlComm;
    sqlSelectCommand1.CommandText = sqlComm;
    sqlConnection1.Open();
    sqlSelectCommand1.ExecuteNonQuery();
    sqlConnection1.Close(); sqlSelectCommand1.CommandText = "SELECT * FROM address";
    sqlConnection1.Open();
    sqlSelectCommand1.ExecuteNonQuery();
    objDataset.Clear();
    sqlDataAdapter1.Fill(objDataset, "address1");
    DataGrid1.DataSource=objDataset.Tables["address1"].DefaultView;
    DataGrid1.DataBind();
    sqlConnection1.Close();
    DataGrid1.EditItemIndex = -1;
    Server.Transfer("WebForm1.aspx");
    }