Winform中 DataGird排序后行定位问题(waiting online)

wzhnet 2005-08-11 01:07:33
问题描述: 我想 循环对 DataGird中 row 进行操作,在 哪行出现错误 就 直接定位到 哪行,这样作 没有问题 。可是 当 排序 后 问题 就 来了 排序后 的 行顺序 与 绑定的表的顺序 不一样 定位出现问题 。我该如何解决
...全文
143 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhnet 2005-08-11
  • 打赏
  • 举报
回复
private int posionRow(DataRow row)
{
bool bTemp=false;
for (int i=0;i<((DataTable)dgData.DataSource).Rows.Count-1;++i)
{
for (int j=0;j<row.Table.Columns.Count;++j)
{
if(row[j]!=dgData[i,j])
{
bTemp=false;
break;
}
bTemp=true;
}

if(bTemp)
return i;
}
return -1;
}
取得 排序后 某一行 的行号

比较 恶心的是 得循环 取得.
lovefootball 2005-08-11
  • 打赏
  • 举报
回复
按照主键不就可以了么?
不过好像在排序后也得循环一遍吧?
HelloBaly 2005-08-11
  • 打赏
  • 举报
回复
我觉得加一个隐藏的列就应该可以了吧。
TechEye 2005-08-11
  • 打赏
  • 举报
回复
设你DataGrid.DataSource = dataView;
排序后,你看到的行数对应着 dataView中的行
wzhnet 2005-08-11
  • 打赏
  • 举报
回复
哦 对了 可以 开始 分析数据时 就用 DataGird[,]来 循环 分析 不用 那个 dataSource来分析了
这样 循环 一遍 就可以了...我去 试试 后来 给分 。来者有分
wzhnet 2005-08-11
  • 打赏
  • 举报
回复
我的意思 是 定位 到 那一行 也就是 用 那个 Position 属性来定位 。我要定位 的 那一行数据我是 知道的 只是 不知道 她在 排序后 的 行数

有一种 方法可以解决的就是 再循环一遍 查找 DataGird[i,j]找到 匹配行 得到 i值 然后 付给Position 。 这样做的愚蠢之处 在于 我分析 数据 时 循环一遍 报错时 就 又来一遍 恶心.
SonicMV 2005-08-11
  • 打赏
  • 举报
回复
数据表中应该有主键吧?你把主键也绑定到DataGrid中,当然,你可以不显示它。这样就可以用主键来定位了。


C#群:14407665,欢迎加入

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧