当您看到行时,数据网格视图中出现DataError
本文关键字:视图 网格 DataError 数据网 数据 | 更新日期: 2023-09-27 17:58:46
我有一个奇怪的问题。我有来自XML
文件的datagridview
填充和在datagridview
末尾添加新行的button
。
我有滚动条,所以我不能一次看到所有的行。当我添加新行时,如果我没有看到新创建的行,则一切正常。
行已经创建,我可以编辑单元格,一切都很好。但如果我向下滚动到最后,然后按下button
,中就有DataError
datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3].
这个专栏很特别。它是DataGridViewComboBoxColumn
,当它没有值时我有DisplayStyle = Nothing
。但是当我有xml中的值时,我会生成style
-ComboBox
我对此没有意见
这是添加行的代码:
private void AddNewBlock_Click(object sender, EventArgs e)
{
datagridview1.Rows.Add(val[0], 0, val[1], new DataGridViewComboBoxCell(), 4, 0);
datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3].ReadOnly = false;
(datagridview1.Rows[datagridview1.Rows.Count - 1].Cells[3] as DataGridViewComboBoxCell).DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
AddNewDataGridvRow(datagridview1.Rows.Count - 1, 3, true);
}
方法"AddNewDataGridvRow"包含:
private void AddNewDataGridvRow(int row, int col, bool isNewBBlock = false)
{
AddNewNumber newNum = new AddNewNumber(); // this shows form with one textbox
// in it you type the value. Nothing special.
DataGridViewComboBoxCell cb = new DataGridViewComboBoxCell();
if (newNum.ShowDialog() == DialogResult.OK)
{
cb = new DataGridViewComboBoxCell();
cb = (DataGridViewComboBoxCell)datagridview1.Rows[row].Cells[col];
byte num= newNum.Num;
cb.ValueMember = num.ToString();
cb.Items.Add(num.ToString());
datagridview1.Rows[row].Cells[col].Value = ver.ToString();
}
是我做错了什么吗?当我调试它时,我在按下这行中的f10后得到错误if (newNum.ShowDialog() == DialogResult.OK)
表单代码:
public partial class AddNewNumber : Form
{
public byte Num= 0;
public AddNewNumber ()
{
InitializeComponent();
}
private void btnOk_Click(object sender, EventArgs e)
{
try
{
Num= Convert.ToByte(tbNum.Text);
this.Close();
}
catch
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
}
}
打开对话框时试试这个:
newNum.ShowDialog()
if (newNum.DialogResult == DialogResult.OK)
{
}
我想DialogResult.OK
不能与.showDialog()
相比。
您必须将窗体的DialogResult
属性与值DialogResult.OK
进行比较,而不是与.showDialog()
进行比较。
我设法修复了它,感谢您的帮助。错误来自线路
datagridview1.Rows.Add(val[0], 0, val[1], new DataGridViewComboBoxCell(), 4, 0);
我把它改成
datagridview1.Rows.Add(val[0], 0, val[1], null, 4, 0);
它奏效了。