0

我几天前在下面发布了这个问题:

在 wpf 或 winform 中使用 datagrid(或 datagridview)时遇到问题

现在,我还有一个问题:

我想以这种方式在datagrid中获得2行的不同索引,如下所示,但它不起作用!

     var index = dgGroup.Items.IndexOf(dgGroup.SelectedItem) + 1;

    // Starting from the index found above loop through section rows untill you find blank row which can be identified by checking if "Group Name" does not have any value.

    for (int i = index; i < dgGroup.Items.Count; i++)
    {
        if (((DataRowView)dgGroup.Items[i]).Row.ItemArray[1].ToString().Trim() == string.Empty)
        {
            return;
        }
        else
        {
              int var1 = dgGroup.Items.IndexOf(dgGroup.SelectedItem);
              int var2 = dgGroup.Items.IndexOf(((DataRowView)dgGroup.Items[i]).Row.ItemArray[1].ToString().Trim() == string.Empty);

              if((var2-var1)==2)
             {
                 // Add data to one line data textbox
             }

            else 
            {
                  // Add data to more than one line data textbox
            }

        }
    }

问题是什么 ?谢谢你的帮助。

4

1 回答 1

0

我不确定您要做什么,但我可以看到您的代码有问题。

int var1 = dgGroup.Items.IndexOf(dgGroup.SelectedItem);

上一行将获取所选行的索引,但下一行是错误的:

int var2 = dgGroup.Items.IndexOf(((DataRowView)dgGroup.Items[i]).Row.ItemArray[1].
ToString().Trim() == string.Empty);

我看不出它是如何编译的......您正在尝试使用以下代码作为IndexOf方法的输入参数,它应该从集合中获取一个项目而不是一个bool值:

((DataRowView)dgGroup.Items[i]).Row.ItemArray[1].ToString().Trim() == string.Empty

我认为您需要用此替换该行:

int var2 = dgGroup.Items.IndexOf(((DataRowView)dgGroup.Items[i]).Row);

此外,这些代码不应该在if语句中而不是else? 您说要查找具有空白组名的项目,但在您的if声明中,您只需在找到空白条目时返回。

于 2013-10-01T10:38:36.537 回答