怎样取得我在datagrid里面选中的记录在datatable里面的row编号? 我要的是该记录在dataset里面的row,不是在datagrid里面的。这两个row不一定相等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎样能取得datagrid里面显示的记录的总数? 困扰我好几天了,解决这个问题,我的思路是这样的:先取得datagrid里面所有记录的总数,然后for或者foreach循环,逐一判断isselect(),再把被选中的记录在dataset里面的记录号找出来。大虾们帮帮忙吧。 到底怎样才能取得选中的datagrid记录对应在dataset.datatable里面的记录编号? 为什么要固执地用记录编号呢你用主键的话可以取得行就算取得了也不能这样获得行号: Table.Rows.Indexof(dataRow)但真的不明白你为什么要固执地用记录编号呢?取得行就行了呀 其实我的目的就是将找到的row删除掉,我对主键不太熟,不知道应该怎么用,不过在数据库里面建表的时候设置了主键。 删除一行有很多办法的1 dataRow.Delete();2 dataTable.Rows.RemoveAt(dataRow);3 BindingContext[dataSource,dataMember].RemoveAt(n)4 CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager; 4.1(cm.List as IBindingList ).RemoveAt(cm.position); 4.2(cm.List as IBindingList ).Remove(dataRow); 我知道这些方法,但前提是我得先找到要删除行在datatable里的row,我现在就是在找这个,怎样能得到当前datagrid里面某一行在datatable里面的row? 1 . DataGrid.HitTestInfo info = this.HitTest(e.X, e.Y); //info.Row2 .ArrayList drs=new ArrayList();CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager; for(int i =0 ;i <cm.List.Count ;i++) //cm.List.Count==格子所显示的行数 if (dataGrid.IsSelected (i)) //如果选中了 drs.add ((cm.List (i) as DataRowView ).Row) //list中每一个元素是一个IBindListreturn drs; //返回在dataGrid中选择了的DataRow 同意alias88() 的,所谓的主键就是可以唯一标识资料的东东,比如流水号啊什么的都可以.既然你知道了某一行,自然知道这一行的主键,就可以通过DataView的RowFilter或DataTable的Select方法获得row啊. =====================================================================1 . DataGrid.HitTestInfo info = this.HitTest(e.X, e.Y); //info.Row2 .ArrayList drs=new ArrayList();CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager; for(int i =0 ;i <cm.List.Count ;i++) //cm.List.Count==格子所显示的行数 if (dataGrid.IsSelected (i)) //如果选中了 drs.add ((cm.List (i) as DataRowView ).Row) //list中每一个元素是一个IBindListreturn drs; //返回在dataGrid中选择了的DataRow=========================================================大虾的方法不错,但是在update以前再次执行此代码就会报错了,因为一旦运行过一次以后,datagrid里面的row就不等于datatable里面的row了。只有想办法得到要删除的数据在datatable里面的真实row才可以。 mydatagrid[mydatagrid.CurrentCell.RowNumber,mydatagrid.CurrentCell.ColumnNumber]这样就能取得当前被选中的mydatagrid.CurrentCell.RowNumber行mydatagrid.CurrentCell.ColumnNumber列的数据接下来怎么做.............楼主明白了吗? 我还是不太明白,取得了数据又如何?到datatable里面去搜索吗?但是如果数据被修改过然后删除,那样不是就找不到了吗? 比如说 你在DataGrid中选中了你想删除的那一行 这一行的第一列是ID列 或姓名列 然后用我的方法取行他的值 然后从头扫描你的那个表 吧符合条件的(刚才在datagrid中选出的那个值)行删去 后台表 和显示的DataGrid 里的数据必须要保持一致的 也就是说如果后台表里的数据改变了必须马上反影到DataGrid中 这个事当然,但是后台表里面只能做删除标记,不能真正删除,否则再update的时候要删除的数据不能被删除。就是说在删除的时候,后台表里面实际的记录要比datagrid里面显示的多。 能不能用findrow试试,找到后findRow.Delete(); findrow是什么意思?我觉得,一条记录不论我怎么改,哪怕我把它的所有字段的内容都作修改,也不论它在datagrid里面是什么位置,是第一条记录还是最后一条,他在datatable里面的位置是不会变的,我就是想找到这个位置。 在一条记录的所有字段,包括主键字段的内容都被修改过以后,还能通过什么来findrow确定它在datatable里面的位置? "其实我的目的就是将找到的row删除掉," 你一定要在datatable中才能删除么取得在grid的row不就可以删了吗无论datagrid的数据源是dataset,还是datatable等,最终都是绑定到一个视图,这个视图里的东东才是你要操纵的,显示了5个出来,可你偏偏要在50个中去找,我是不会做这种曲里拐弯的事 多谢alias大虾,我用datarow的方法解决了,虽然不是我最理想的方法,但总算是搞定。 NotifyIcon托盘图标鼠标悬停事件问题? 如何同时返回值与数据集 重写控件CPU占用率高 简单的XML读取问题 明天可以去女朋友那里了...小散五十分庆祝! c#怎么获取进程实例? 求救.不知原因何在 用那个类可以产生一个临时文件? 如何进行短信业务开发 这个很简单的,希望有人能指点一下 请问用C#开发的dll在VC6.0中是否可用? 删除 Request.Params 中部分 Key 值。
你用主键的话可以取得行
就算取得了
也不能这样获得行号: Table.Rows.Indexof(dataRow)
但真的不明白你为什么要固执地用记录编号呢?
取得行就行了呀
1 dataRow.Delete();
2 dataTable.Rows.RemoveAt(dataRow);
3 BindingContext[dataSource,dataMember].RemoveAt(n)
4 CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager;
4.1(cm.List as IBindingList ).RemoveAt(cm.position);
4.2(cm.List as IBindingList ).Remove(dataRow);
2 .
ArrayList drs=new ArrayList();
CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager;
for(int i =0 ;i <cm.List.Count ;i++) //cm.List.Count==格子所显示的行数
if (dataGrid.IsSelected (i)) //如果选中了
drs.add ((cm.List (i) as DataRowView ).Row) //list中每一个元素是一个IBindListreturn drs; //返回在dataGrid中选择了的DataRow
1 . DataGrid.HitTestInfo info = this.HitTest(e.X, e.Y); //info.Row
2 .
ArrayList drs=new ArrayList();
CurrencyManager cm=BindingContext[dataSource,dataMember] as CurrencyManager;
for(int i =0 ;i <cm.List.Count ;i++) //cm.List.Count==格子所显示的行数
if (dataGrid.IsSelected (i)) //如果选中了
drs.add ((cm.List (i) as DataRowView ).Row) //list中每一个元素是一个IBindListreturn drs; //返回在dataGrid中选择了的DataRow
=========================================================
大虾的方法不错,但是在update以前再次执行此代码就会报错了,因为一旦运行过一次以后,datagrid里面的row就不等于datatable里面的row了。只有想办法得到要删除的数据在datatable里面的真实row才可以。
我觉得,一条记录不论我怎么改,哪怕我把它的所有字段的内容都作修改,也不论它在datagrid里面是什么位置,是第一条记录还是最后一条,他在datatable里面的位置是不会变的,我就是想找到这个位置。
你一定要在datatable中才能删除么
取得在grid的row不就可以删了吗
无论datagrid的数据源是dataset,还是datatable等,最终都是绑定到一个视图,这个视图里的东东才是你要操纵的,显示了5个出来,可你偏偏要在50个中去找,我是不会做这种曲里拐弯的事