首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DataGridView默认错误对话框

DataGridView默认错误对话框
EN

Stack Overflow用户
提问于 2015-04-20 08:56:13
回答 2查看 2K关注 0票数 0

下面的方法(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 ON,程序调用GetData方法时,我得到以下错误:

对于字段anNo、acWoex、acIdent、acName (_utJM_WOExCycleItem中的记录数x)重复错误。

方法:

代码语言:javascript
运行
复制
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);
}
EN

回答 2

Stack Overflow用户

发布于 2015-04-20 09:29:52

如果我们查看您的第一个查询,您就没有任何名称为anNo的列。

然后将此结果集与DataGridView控件绑定,可能您的DataGridView控件有一个映射了anNo列的列,该列在数据源中找不到。

在“设计模式”中选择DataGridView控件(与_utJM_WOExCycle绑定),并检查您定义的列,将DataPropertyName设置为anNo的列,该列是实际问题。

票数 0
EN

Stack Overflow用户

发布于 2019-03-27 16:51:34

在炸毁整个EntityFramework连接并再次执行该过程之后,我遇到了这个错误,这个错误非常模糊。

我发现我的问题是SQL服务器是如何存储我的映像的。不要使用type Image,它不推荐使用,它有byte[]类型,并保存为0x433.

将您的图像存储类型更改为var二进制(最大),它将保存为0xFFD。解决了这个问题。

概述:

  1. 检查实体框架连接
  2. 将图像类型保存为Var二进制(最大)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29743267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档