下面的方法(GetData
)给出了这个错误:
DataGridView默认错误对话框 以下异常发生在DataGridView中: System.ArgumentException:列'anNo‘不属于表_utJM_WOExCycleItem。 在System.Data.DataRow.CheckColumn(DataColumn列) 在System.Data.DataColumnPropertyDescriptor.GetValue(Object组件) 在System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetValue(Int32 boundColumnIndex,Int32 columnIndex,Int32 rowIndex) 若要替换此默认对话框,请处理DataError事件。
我能搞清楚是怎么回事。当表_utJM_WOExCycle
在状态'O
‘或'N
’中没有记录时,我会得到这个错误。当一条记录获得acStatus
O
或N
,程序调用GetData
方法时,我得到以下错误:
对于字段anNo、acWoex、acIdent、acName (_utJM_WOExCycleItem中的记录数x)重复错误。
方法:
private void GetData(DataGridView dgwm, DataGridView dgwd, BindingSource bsm, BindingSource bsd, String resurs)
{
dgwm.DataSource = bsm;
dgwd.DataSource = bsd;
DataSet ds = new DataSet();
String SQL = "";
SQL = " SELECT anCycle, acResurs, anYear, case when dbo._ufnJM_CycleCompare(anCycle, acResurs, anYear, 'P') <> dbo._ufnJM_CycleCompare(anCycle, acResurs, anYear, 'T') then 'Sprememba' else '' end acChange, acNote " +
" FROM _utJM_WOExCycle " +
" WHERE acResurs = '" + resurs + "' " +
" AND acStatus in ('O','N') " +
" ORDER BY anCycle asc ";
SqlDataAdapter sqlDataAdapterMaster = new SqlDataAdapter(SQL, cn);
sqlDataAdapterMaster.Fill(ds, "_utJM_WOExCycle");
SQL = " SELECT anCycle, anNo, acWoex, acIdent, acName" +
" FROM _utJM_WOExCycleItem " +
" WHERE acResurs = '" + resurs + "' " +
" and anCycle in (select anCycle from RotoP.._utJM_WOExCycle where acStatus in ('O','N') and acResurs = '" + resurs + "') " +
" ORDER BY anCycle asc, anNo asc ";
SqlDataAdapter sqlDataAdapterDetail = new SqlDataAdapter(SQL, cn);
sqlDataAdapterDetail.Fill(ds, "_utJM_WOExCycleItem");
DataRelation relation = new DataRelation("Povezava1",
ds.Tables["_utJM_WOExCycle"].Columns["anCycle"],
ds.Tables["_utJM_WOExCycleItem"].Columns["anCycle"]);
ds.Relations.Add(relation);
bsm.DataSource = ds;
bsm.DataMember = "_utJM_WOExCycle";
bsd.DataSource = bsm;
bsd.DataMember = "Povezava1";
dgwm.ReadOnly = true;
dgwd.ReadOnly = true;
dgwm.AutoResizeColumns();
dgwd.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
dgwm.Columns["anYear"].Visible = false;
dgwm.Columns["acResurs"].Visible = false;
dgwm.Columns["acChange"].DefaultCellStyle.ForeColor = Color.Green;
dgwm.Columns["acNote"].DefaultCellStyle.ForeColor = Color.Red;
dgwm.Columns["acNote"].HeaderText = "Opomba";
dgwm.Columns["anCycle"].HeaderText = "Cikel";
dgwm.Columns["acChange"].HeaderText = "";
dgwd.Columns["anCycle"].Visible = false;
dgwd.Columns["anNo"].HeaderText = "Pozicija";
dgwd.Columns["acWoex"].HeaderText = "Delovni nalog";
dgwd.Columns["acIdent"].HeaderText = "Šifra izdelka";
dgwd.Columns["acName"].HeaderText = "Naziv izdelka";
dgwm.SetColumnSortMode(DataGridViewColumnSortMode.NotSortable);
dgwd.SetColumnSortMode(DataGridViewColumnSortMode.NotSortable);
}
发布于 2015-04-20 09:29:52
如果我们查看您的第一个查询,您就没有任何名称为anNo
的列。
然后将此结果集与DataGridView
控件绑定,可能您的DataGridView
控件有一个映射了anNo
列的列,该列在数据源中找不到。
在“设计模式”中选择DataGridView
控件(与_utJM_WOExCycle
绑定),并检查您定义的列,将DataPropertyName
设置为anNo
的列,该列是实际问题。
发布于 2019-03-27 16:51:34
在炸毁整个EntityFramework连接并再次执行该过程之后,我遇到了这个错误,这个错误非常模糊。
我发现我的问题是SQL服务器是如何存储我的映像的。不要使用type Image,它不推荐使用,它有byte[]类型,并保存为0x433.
将您的图像存储类型更改为var二进制(最大),它将保存为0xFFD。解决了这个问题。
概述:
https://stackoverflow.com/questions/29743267
复制相似问题