【问题标题】:Button to fill textbox from selected datagrid row从选定的数据网格行填充文本框的按钮
【发布时间】:2014-06-26 16:15:23
【问题描述】:

我有以下问题,这个 vb 的东西看起来很像我想要做的:Clicking on a datagrid row and displaying its contents in textboxes。 有人可以对这些专栏有所了解吗:

  ,[empLastName]
  ,[empFirstName]
  ,[empExtension]
  ,[empEmail]
  ,[empOfficeCode]
  ,[empReportsTo]
  ,[empJobTitle]
  ,[empActive]

我需要通过单击一个名为 SelectedCells 的按钮将其中的所有阀门取出到一个多行文本框中。

这是迄今为止的按钮代码,是的,它不仅仅将行数据带到文本框:

private void selectedCellsButton_Click_1(object sender, DataGridViewCellEventArgs e)
        {
            {
                Int32 selectedCellCount =
                    dataGridView1.GetCellCount(DataGridViewElementStates.Selected);
                if (selectedCellCount > 0)
                {
                    if (dataGridView1.AreAllCellsSelected(true))
                    {
                        MessageBox.Show("All cells are selected", "Selected Cells");
                    }
                    else
                    {
                        System.Text.StringBuilder sb =
                            new System.Text.StringBuilder();

                        for (int i = 0;
                            i < selectedCellCount; i++)
                        {
                            sb.Append("Row: ");
                            sb.Append(dataGridView1.SelectedCells[i].RowIndex
                                .ToString());
                            sb.Append(", Column: ");
                            sb.Append(dataGridView1.SelectedCells[i].ColumnIndex
                                .ToString());
                            sb.Append(Environment.NewLine);
                        }

                        sb.Append("Total: " + selectedCellCount.ToString());
                        MessageBox.Show(sb.ToString(), "Selected Cells");
                        double[] list = new double[9];


                          Cvalve.Text = dataGridView1.SelectedRows[0].Cells["empNumber"].Value.ToString();

                    }
                }
            }
        }

如果有人能指出哪里出了问题,也许可以通过代码本身的一些指导为我指明正确的方向。

【问题讨论】:

  • 我不知道你想要什么或做什么。如果你想做你的标题所说的,为什么不去做呢?为什么要打扰选定的单元格和消息框?您提到的VB代码的答案相当清楚。我看不出与您的代码相似,除了最后一行。对所有列重复此操作,跳过其余列,您就完成了!或者更好地解释(请纠正拼写)你想要什么。
  • 消息框刚刚完成,因此用户与选择了女巫行中的单元格进行了对话我想要做的是将阀门从所选行移到多行文本框中,但我找到了一些以另一种方式做的人发现一些不起作用的东西在列名中给出错误,但问题是gridview具有相同的列名并且数据库列被称为完全相同
  • 如果我按照您的解释进行操作,则会返回此异常:索引超出范围。这些不能是负数,并且必须小于集合的大小。在每一行
  • 好的。编辑您的问题并向我们展示引发错误的部分!

标签: c# datagrid


【解决方案1】:

您是否正在寻找这样的东西:

DataGridViewRow row = dataGridView1.SelectedRows[0];

Cvalve.Text  = row.Cells["empNumber"].Value.ToString() + Environment.NewLine;    
Cvalve.Text += row.Cells["empLastName"].Value.ToString() + Environment.NewLine;    
//...    
Cvalve.Text += row.Cells["empJobTitle"].Value.ToString() + Environment.NewLine;    
Cvalve.Text += row.Cells["empActive"].Value.ToString() ;

?

您需要决定要显示哪一行。如果您将DataGridView.SelectionMode设置为CellSelect,则用户可以选择单元格而不选择行。然后你可以例如使用

DataGridViewRow row = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex];

而是显示第一个选定单元格所在行的数据。

【讨论】:

  • 获取索引超出范围。这些不能是负数,并且必须小于第一行集合的大小。
  • 下一个是找不到列,现在该行在 gridview 中通过用户单击或按钮选择其自身。
  • 修复了需要从行中取出列名,并且在我的情况下需要放入 1 槽的列索引 8 现在它确实放入了选定行的所有列中。
  • 很好,你得到了它的工作。请注意:您可以通过列索引名称访问单元格;你只需要正确的名字!这可能非常有用,尤其是当所选列的数量或顺序发生变化时..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 2015-07-30
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多