C# 设置图像的排序顺序

C# 设置图像的排序顺序,c#,datagridview,foreach,C#,Datagridview,Foreach,我遇到了一个问题,几个星期来我一直在思考这个问题 我想出了一个非常糟糕、非常漫长和尴尬的解决方案。 现在我想知道我是否能从你那里得到一些专业帮助:) 我正在尝试通过datagridview循环并设置图像的顺序。 My in data是一个datagridview,它有两列(id、sortorder) 问题是我的in data sortorder对于第一个图像是1,对于最后一个图像是2,并且分配值0应该介于两者之间 所以我想转换这些值: id sortorder 9520 1 9520

我遇到了一个问题,几个星期来我一直在思考这个问题

我想出了一个非常糟糕、非常漫长和尴尬的解决方案。
现在我想知道我是否能从你那里得到一些专业帮助:)

我正在尝试通过datagridview循环并设置图像的顺序。
My in data是一个datagridview,它有两列(id、sortorder)

问题是我的in data sortorder对于第一个图像是1,对于最后一个图像是2,并且分配值0应该介于两者之间 所以我想转换这些值:

id sortorder 9520 1 9520 0 9520 0 9520 0 9520 0 9520 2 这样行吗

void setSort()
{
    string id = dataGridView1[0, 0].Value.ToString();
    int sOrder = 0;
    for (int row = 0; row < dataGridView1.Rows.Count; row++)
    {
        if (dataGridView1[0, row].Value == null) break;
        string id2 = dataGridView1[0, row].Value.ToString();
        if (id2 != id) sOrder = 0;
        sOrder++;
        dataGridView1[1, row].Value = sOrder;
        id = id2;
    }
}
void setSort()
{
字符串id=dataGridView1[0,0].Value.ToString();
int-sOrder=0;
对于(int row=0;row
我设法在in数据中进行了所需的更改,因此现在我可以按原样使用TaW的解决方案:)
非常感谢您的帮助和耐心

1)您真的应该包括您的代码。2) 如果你有一个有效的解决方案,只是想得到关于如何改进的建议,那么最好在我不理解你的问题上发表这个问题。为什么不在行上循环并在第二列中设置值?或者是否有更多ID,并且您希望在每次更改时重新启动排序器?问这些问题要花的时间和问这些问题一样多。嗨,朱哈尔,谢谢你的回答。我写的代码太难堪了,不起作用,所以我把它删除了…你能告诉我,如果你要这样做,你应该怎么做吗?嗨,TaW,问题是我必须将每个值从0改为计数器,但仍然保留第一个和第二个图像的顺序谢谢TaW,但问题是,我需要原始排序器1的图像在“新”排序器中保持第一位,原始排序器2的图像在“新”排序器中保持最后一位,正如您所知,我在解释我的问题时遇到一些问题…:)我已经用到目前为止得到的代码更新了这个问题:)我需要原始排序器1的图像在“新”排序器中保持第一位,原始排序器2的图像在“新”排序器中保持最后一位。上面的代码就是这样做的,你试过了吗?当我试过你提供的代码时,每个图像的排序都是正确的,但是它没有考虑原始的排序顺序。如果你看这张图片,“类型”是原始的排序顺序,“状态”是新的排序顺序:我要寻找的结果是:[link]()啊,更多的列开始发挥作用。现在,DGV不容易按多个列进行排序,也不能进行稳定排序。在我看来,最好的解决方案是创建一个特殊的排序列,它保存所有需要的信息。因此,据我所知,您编辑的代码正朝着正确的方向发展。是否要使用DGV排序?您正在填写第二个DGV?
void setSort()
{
    string id = dataGridView1[0, 0].Value.ToString();
    int sOrder = 0;
    for (int row = 0; row < dataGridView1.Rows.Count; row++)
    {
        if (dataGridView1[0, row].Value == null) break;
        string id2 = dataGridView1[0, row].Value.ToString();
        if (id2 != id) sOrder = 0;
        sOrder++;
        dataGridView1[1, row].Value = sOrder;
        id = id2;
    }
}