private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
newDS.Tables[0].Rows[e.Item.ItemIndex].ItemArray[0]=((TextBox)this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0]).Text;
newDS.AcceptChanges();
Response.Write(((TextBox)this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0]).Text+"TextBox<br>");
Response.Write(newDS.Tables[0].Rows[e.Item.ItemIndex].ItemArray[0]+"DS");
this.DataGrid1.EditItemIndex = -1;
DataBind();
}
想在DataGrid里修改DataSet一个表里的值,,可是赋值语句不起作用,请教!!用Response。Write()写出来TextBox的值已经改了,,可是为什么VDataSet里的改不了??
800006TextBox
800002DS

解决方案 »

  1.   

    可能你的DataSet中的值在修改之后又被重新赋值了,检查你的pageload过程..
      

  2.   

    没有重新赋值啊。
    看我的代码,,
    赋值后马上把他们的值写出来,,都是不一样的。。
    newDS.Tables[0].Rows[e.Item.ItemIndex].ItemArray[0]=((TextBox)this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0]).Text;
    newDS.AcceptChanges();
    Response.Write(((TextBox)this.DataGrid1.Items[e.Item.ItemIndex].Cells[0].Controls[0]).Text+"TextBox<br>");
    Response.Write(newDS.Tables[0].Rows[e.Item.ItemIndex].ItemArray[0]+"DS");这是结果
    800006TextBox
    800002DS
      

  3.   

    1.textbox要设置为autopostback,即为true值
    2.为保险起见,((TextBox)this.DataGrid1.Items[e.Item.ItemIndex].FindControls("TextBoxName")).Text这样找一定可以找到你要的那个textbox
      

  4.   

    newDS.Tables[0].Rows[e.Item.ItemIndex].ItemArray[0]+"DS"调用的是DataColumn的Get属性,怎么能赋值啊
      

  5.   

    晕,改另一种写法就行了
    现在请教这两种写法有什么不同?
    DataSetName.Tables[].Rows[].ItemArray[]
    DataSetName.Tables[].Rows[][]
    为什么一个不能赋值,另一个可以?
      

  6.   

    msdn上面写//-----------------------
    .NET Framework 类库   DataRow.ItemArray 属性
    通过数组获取或设置此行的所有值。
    //-------------------------------可以通过此属性设置此行的值
      

  7.   

    to  lgxtry() :
    DataRow.ItemArray源码如下:
    public object[] ItemArray
    {
    get
    {
    int num1 = this.Table.Columns.Count;
    object[] objArray1 = new object[num1];
    for (int num2 = 0; num2 < num1; num2++)
    {
    objArray1[num2] = this[num2];
    }
    return objArray1;
    }
    set
    {
    看到它NEW了一个数组了吗?所以返回的不是它的引用了。不能改值
      

  8.   

    to:xh4000(隔夜剩饭)
    恩,,恩,明白了
    谢谢你哈。
    你的那个源码是哪里找出来的呀,,
    我也想找出来看看
      

  9.   

    ItemArray的作用是获取或设置DataRow集合的所有值,注意...是所有值
    正确的通过ItemArray属性赋值的方法是:Object myarr=new Object[5];
    myarr[1]="第一列的值";
    myarr[2]="第二列的值";
    .....
    mydatarow.ItemArray=myarr;===============================
    详细的例子,看这里http://msdn.microsoft.com/library/CHS/cpref/html/frlrfSystemDataDataRowClassItemArrayTopic.asp