如何动态获取DataGrid选中行的列的值,比如说有一个DataGrid控件上显示了,很多数据,在每行的最后面有一个控钮,当我点击这个按钮时,我怎么样才能获取这一选取行的各字段的值??急呀!

解决方案 »

  1.   

    winform:
    某行某列的值:
    获得行索引
    int i = this.datagrid.CurrentRowIndex;
    用索引获得某列值
    string str = this.datagrid[i,3].ToString();
    webform:
    string str =DataGrid1.SelectedItem.Cells[0].Text;
      

  2.   

    基础思路:   在当前选择行里面使用FindControl("object");
       然后慢慢控制object
      

  3.   

    foreach (DataRow dr DataTable yourDt)
    {
       dr["列名"]="你要输入的值"
    }
    该操作也可以使用dataset.tables[0].rows.count;取得行数,然后遍历,对i进行判断并赋值
      

  4.   

    http://netinfo.cnblogs.com/archive/2005/09/13/235868.html
      

  5.   

    我有下面这个方法,程序一运行到第二句出现下面的错误,
    第一句没有问,正常执行,执行到第二句就报告如下异常,请各位大哥大姐,偷空帮忙看一下
    应该怎样解,这个怪问题????????
    string bookID=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    string bookedName=this.DataGrid1.SelectedItem.Cells[1].Text.ToString();“/Graduate”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 89:  string bookID=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    行 90:  string bookName=this.DataGrid1.DataKeyField[e.Item.ItemIndex].ToString();
    行 91:  string bookedName=this.DataGrid1.SelectedItem.Cells[1].Text.ToString();
    行 92:  int Name=this.DataGrid1.Columns.Count;
    行 93: 
     源文件: d:\wwwroot\graduate\shoppingbus.aspx.cs    行: 91 堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       Graduate.shoppingBus.DataGrid1_ItemCommand(Object source, DataGridCommandEventArgs e) in d:\wwwroot\graduate\shoppingbus.aspx.cs:91
       System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
       System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e)
       System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       System.Web.UI.Page.ProcessRequestMain() 
    --------------------------------------------------------------------------------
    版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
      

  6.   


    用for循环也会出错 for (int i=0;i<this.DataGrid1.Columns.Count-1;i++)
    {
          Response.Write(ds.Tables["temp"].Rows[e.Item.ItemIndex][i]+" ");
    }
    我照着柏林哥,指点的网址去看了,照着他那样做了,出现了下面的错误?请柏林哥帮忙看一下??“/Graduate”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 102: for (int i=0;i<this.DataGrid1.Columns.Count-1;i++)
    行 103: {
    行 104: Response.Write(ds.Tables["temp"].Rows[e.Item.ItemIndex][i]+" ");
    行 105: }
    行 106:
     源文件: d:\wwwroot\graduate\shoppingbus.aspx.cs    行: 104 堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       Graduate.shoppingBus.DataGrid1_ItemCommand(Object source, DataGridCommandEventArgs e) in d:\wwwroot\graduate\shoppingbus.aspx.cs:104
       System.Web.UI.WebControls.DataGrid.OnItemCommand(DataGridCommandEventArgs e)
       System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
       System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       System.Web.UI.WebControls.ImageButton.OnCommand(CommandEventArgs e)
       System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       System.Web.UI.Page.ProcessRequestMain() 
    --------------------------------------------------------------------------------
    版本信息: Microsoft
      

  7.   

    晚上我测了一下,netinfo的程序是正确的,没有问题。
    见你的出错信息里有这句:
        Response.Write(ds.Tables["temp"].Rows[e.Item.ItemIndex][i]+" ");
    原程序是:
        Response.Write(ds.Tables[0].Rows[e.Item.ItemIndex][i]+" ");
    注意到原程序里填充时为:
        adapter.Fill(ds,"employees");
    你是不是自行改了Table名为temp而上面这句没改呢?
      

  8.   

    如果
    adapter.Fill(ds,"empliyees");

    Response.write(ds.Tables[0].Rows[e.item.ItemIndex][i]+""
    表名不一样的话也会出错。