【问题标题】:DateTimePicker value from DataGridView来自 DataGridView 的 DateTimePicker 值
【发布时间】:2016-02-07 22:20:20
【问题描述】:

我有一些文本框和一个日期时间选择器。上面还有一个datagridview。我将数据上传到 mysql 表。我想通过文本框和日期时间选择器修改数据,但出现错误:

System.ArgumentOutOfRangeException

在 dateTimePicker.Value 行上:

private void dataGridView1_SelectionChanged(object sender, EventArgs e) {
  dateTimePicker1.Value = Convert.ToDateTime(dataGridView1.SelectedRows[0].Cells[1].Value);

  idoTextBox.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
  pkcomboBox.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
  minositesbox.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
  esetextBox.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
  fotextBox.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
  megjegyzestextBox.Text = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
}

我做错了什么?

【问题讨论】:

标签: c# winforms datagridview datetimepicker


【解决方案1】:

您可能没有选择 ,只选择了一个单元格。

确保您设置了正确的 SelectionMode 属性:

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

另外,请确保您已选择行:

if (dataGridView1.SelectedRows.Count > 0) {
  dateTimePicker1.Value = Convert.ToDateTime(dataGridView1.SelectedRows[0].Cells[1].Value);
  // ...
}

【讨论】:

  • FullRowSelect 属性被选中。当我选择一行时,其他文本框上的数据正确显示。
  • @GaborVirag 您的日期值在网格中有什么样的值?
  • 我的网格从 mysql 表中获取数据。它的类型是“日期”。
  • @GaborVirag 更新帖子。我能看到的唯一另一种可能性是您没有检查 SelectedRows 实际上 具有 行。
【解决方案2】:

您收到ArgumentOutOfRangeException,这意味着您很可能正在尝试访问指定索引处不存在的值。你可能在打电话时这样做

dataGridView1.SelectedRows[0].Cells[7].Value.ToString();

您在这里使用的单元格索引为 7,是否有可能 Cells[7] 不存在?

【讨论】:

  • 我在 dataGridView1 中有 8 个单元格。我想首先将所有数据插入文本框和 dateTimePicker 而不是 ID 单元格。我首先更改了代码以从 dataGridView 中删除 Id 列。当我单击插入按钮并上传数据时会发生错误。我认为 dataGridView 单元格编号从 0 开始。“日期”数据在 dataGridView 中排在首位。如何从错误中上传图片?
  • 您可以将错误中的文本上传到 pastebin 之类的地方,然后在此处发布链接。
  • 当我将数据插入到数据库表中时,我插入 dateTimePicker1.Value.Date 因为只想查看日期。但是,在 dataGridView1_SelectionChanged 事件中,dateTimePicker1 的值包含日期和时间 (00:00)。不管是不是错?我不知道。我一直在努力解决这个问题,但我不知道是什么问题。
  • 您如何将日期存储在您的数据库表中?是日期时间吗?您应该将其切换为日期列类型,它仅存储日期时间的日期部分,例如只有 2016.12.2 没有 00:00 部分。
  • 它在表格中的日期类型。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多