C# “数据错误”对话框
我得到一个datagridview默认错误对话框。上面说的是处理dataerror事件。 我正在从数据表加载myy DGV中的数据。当我尝试添加新行时,我单击带有(*)的空行。当我开始在新行单元格中键入一些值时,就会显示dataerror并进入infinte循环C# “数据错误”对话框,c#,winforms,C#,Winforms,我得到一个datagridview默认错误对话框。上面说的是处理dataerror事件。 我正在从数据表加载myy DGV中的数据。当我尝试添加新行时,我单击带有(*)的空行。当我开始在新行单元格中键入一些值时,就会显示dataerror并进入infinte循环 DataGridViewDataError.context = display. Error: Index 3 does not have a value. 我的网格有3行,这里新行将有索引3 这是DGV加载的代码 privat
DataGridViewDataError.context = display.
Error: Index 3 does not have a value.
我的网格有3行,这里新行将有索引3
这是DGV加载的代码
private void frmPlant_Load(object sender, EventArgs e)
{
Program.fMain = this;
Program.LoadAllForms();
string selectCommand = "select * from T1";
FillData(selectCommand);
}
private void FillData(string selectCommand)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
conn.Open();
dataGridView1.AutoGenerateColumns = true;
da = new SQLiteDataAdapter("selectCommand", connString);
ds = new DataSet();
commandBuilder = new SQLiteCommandBuilder(da);
da.Fill(ds, "T1");
dt = ds.Tables[0];
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.DataMember = "T1";
dataGridView1.Columns["TID"].ReadOnly = true;
}
}
我不知道代码中到底发生了什么。已处理DataError事件。不确定UserAddDrows、RowsValidating是否有用
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
MessageBox.Show(e.Context.ToString());
e.Cancel = true;
}
多谢各位
孙不太清楚。尝试用System.Diagnostics.Debug.WriteLine替换MessageBox.Show语句,并在RowsValidating事件中执行相同操作。MessageBox在这种情况下可能会导致问题,因为它“暂停”处理
private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.Context.ToString());
e.Cancel = true;
}
MSDN声明如下: 与此事件关联的DataGridViewDataErrorEventArgs对象的ColumnIndex和RowIndex属性通常表示发生数据错误的单元格。但是,当错误发生在外部数据源中时,该数据源可能不提供发生错误的列。在这种情况下,ColumnIndex属性通常表示出错时当前单元格的列
使用这些属性可以找出发生错误的列 如果为每列定义的数据类型不匹配,就会发生这些情况。确保!dataGridView1\u DataError事件给出的e.Rowindex=3和e.colindex=-1与nawfal建议的不同,我将尝试不将TID列设置为只读。执行此操作并查看RowIndex和ColumnIndex属性包含哪些值。System.Diagnostics.Debug.WriteLine将输出写入何处?Visual Studio输出窗口;查看->输出;Ctrl+W,O