应该是dataset,名字写错了~!改正

解决方案 »

  1.   

    换一种方式:
    int index = 0;
    for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
       if((int)ds.Tables[0].Rows[i]["id"] == 5)
       {
           index = i;//这就是你想要的位置
       }
    }
      

  2.   

    用for循环阿,会不会很慢
    我要是有5000条记录的话~!?
    怎么办~!?
      

  3.   

    redcaff的这种方法还不把服务器给累死我想你只可能是想批量修改dataset里的内容,然后通过sqldataadapter.update()方法修改数据库才可能用到这种情况如果你绑定的是datagrid控件
    用DataGridItem 对象的DataSetIndex属性:返回数据源的索引值如果你绑定到了dataview对象上,DataSetIndex返回的就是dataview里的索引。关键看数据源。DataGridItem dgi=DataGrid1.Items[0];
    Response.Write(dgi.DataSetIndex);
      

  4.   

    dataview有find方法,可以得到索引。
      

  5.   

    我刚看过datarow 得文档
    好像有个find方法可以实现我的想法,不知各位意见如何?
      

  6.   

    dv.sort="customers"
    vals(0)="John"
    vals(1)="Smith"
    i=dv.find(vals)
      

  7.   

    to bluefish922(小月人):
    新增纪录我想应该这样控制,我只把这条新行增加到datatable的第一行 DataSet ds=(DataSet)ViewState["ds"];
    DataRow newrow=ds.Tables[0].NewRow();
    newrow[0]=0;
    newrow[1]="";
    ds.Tables[0].Rows.InsertAt(newrow,0);
    DataGrid1.DataSource=ds.Tables[0].DefaultView;
    DataGrid1.DataBind();
      

  8.   

    dataview.find()方法是可以找到索引
    但有一个前提,你dataview.find(DataRow对象)
    你必须要有键字段在DataRow[]里现在你可以得到dataview的index值了
    是不是不能确定这个index是不是datatable里的那个index呀!
    肯定不是其实你有了这个dataview的index值就可以了
    不要只知道去找datatable里的行的索引值,然后通过datatable改变你的dataset直接更改dataview,他会自动映射到datatable里的索引下面是我做的测试
    private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
    {
    DataView myview=((DataSet)ViewState["ds"]).Tables[0].DefaultView;
    myview.Sort=e.SortExpression+(String)ViewState["sortby"];
    ViewState["sort"]=myview.Sort;
    if(ViewState["filter"]!=null)
    {
    myview.RowFilter=(string)ViewState["filter"];
    }
    DataGrid1.DataSource=myview;
    DataGrid1.DataBind(); switch((string)ViewState["sortby"])
    {
    case " ASC":
    ViewState["sortby"]=" DESC";
    break;
    case " DESC":
    ViewState["sortby"]=" ASC";
    break;
    }
    myview[0][0]="hoho";//注意这行
    Response.Write(((DataSet)ViewState["ds"]).GetXml());//打印出来的值证明相应的datatable已经被更改

    }
      

  9.   

    to mbm(-- (@ \/ @) --) :
    等会,让我慢慢看看
      

  10.   

    to mbm:
    你上面讲的那个
    新增纪录我想应该这样控制,我只把这条新行增加到datatable的第一行 DataSet ds=(DataSet)ViewState["ds"];
    DataRow newrow=ds.Tables[0].NewRow();
    newrow[0]=0;
    newrow[1]="";
    ds.Tables[0].Rows.InsertAt(newrow,0);
    DataGrid1.DataSource=ds.Tables[0].DefaultView;
    DataGrid1.DataBind();我觉得不妥当吧
    我一般表的第一列一般为自动id,能够强行设置成为0吗!~?
      

  11.   

    上面的代码我是为了实现一种效果
    点击“增加”按钮,让datagrid控件的第一行为空,可以填入数据,提交时并没有用到newrow[0]=0的值,只是为了让它占位,并且符合从数据库表映射过来的datatable的字段类型,iId列也是自增列例如:
    填充数据集的sql
    string sql="select iId,cParamValue from t_EnumType where   cParamDescription='"+sort+"' order by iId Desc";更新数据库表的sql
    insert t_EnumType(cParamDescription,cParamValue) values('"+Description+"','"+Value+"'
    )"; 

      

  12.   

    上面的代码我是为了实现一种效果
    点击“增加”按钮,让datagrid控件的第一行为空,可以填入数据,提交时并没有用到newrow[0]=0的值,只是为了让它占位,并且符合从数据库表映射过来的datatable的字段类型,iId列也是自增列例如:
    填充数据集的sql
    string sql="select iId,cParamValue from t_EnumType where   cParamDescription='"+sort+"' order by iId Desc";更新数据库表的sql
    insert t_EnumType(cParamDescription,cParamValue) values('"+Description+"','"+Value+"'
    )"; 

      

  13.   

    上面的代码我是为了实现一种效果
    点击“增加”按钮,让datagrid控件的第一行为空,可以填入数据,提交时并没有用到newrow[0]=0的值,只是为了让它占位,并且符合从数据库表映射过来的datatable的字段类型
      

  14.   

    DataView dv = new DataView(DataSet1.Tables[0]); ---假设就一张表
    dv.Filter = @"ID = '"+strID+"'";   ---假设id为字符类型
    假设有个字段为name,在select语句中的位置为2,则可如下得到name值
    strName = dv.Row.ItemArray[1].ToString();
    ....
      

  15.   

    不好意思有个地方写错了了,正确的如下DataView dv = new DataView(DataSet1.Tables[0]); ---假设就一张表
    dv.RowFilter = @"ID = '"+strID+"'";   ---假设id为字符类型
    假设有个字段为name,在select语句中的位置为2,则可如下得到name值
    foreach(DataRowView drv in dv)
    {
       strName = drv.Row.ItemArray[1].ToString();
       ....
    }
      
      

  16.   

    to : zjsoso() 
    我今天没有时间看,明天答复你