首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不存在来自对象类型System.Widows.Forms.DataGridViewTextBoxCell的映射

不存在来自对象类型System.Widows.Forms.DataGridViewTextBoxCell的映射
EN

Stack Overflow用户
提问于 2017-07-20 20:12:51
回答 1查看 117关注 0票数 0

我对C#编码和这个网站是新手,所以请耐心听我说。单击按钮,我希望我的存储过程执行并填充datagridview。当我运行应用程序并单击按钮时,我一直收到一个错误消息:

“不存在从对象类型System.Windows.Forms.DataGridViewTextBoxCell到已知托管提供程序本机类型的映射。”

我该如何解决这个问题?我尝试将参数转换为它们的数据类型,但似乎也不起作用。我已经被困在这个问题上有一段时间了,我正在努力在互联网上找到关于我的具体错误的任何东西。谢谢。

代码语言:javascript
复制
    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection sqlcn1 = new SqlConnection("My Server Connection String");
        sqlcn1.Open();

        //Stored Procedure
        SqlCommand sqlcmddel = new SqlCommand("My_Stored_Procedure", sqlcn1);
        sqlcmddel.CommandType = CommandType.StoredProcedure;
        sqlcmddel.ExecuteNonQuery();


        sqlcn1 = new SqlConnection("My Server Connection String");
        sqlcn1.Open();



        foreach (DataGridViewRow row in dataGridView1.Rows) ;

        SqlCommand sqlcmdins = new SqlCommand("My_Stored_Procedure", sqlcn1);

        //Stored Procedure


        sqlcmdins.CommandType = CommandType.StoredProcedure;
        sqlcmdins.Parameters.Add("@sugnum", SqlDbType.Int).Value = dataGridView1.Rows[Ournum].Cells[0];
        sqlcmdins.Parameters.Add("@sugtype", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[1];
        sqlcmdins.Parameters.Add("@buyerid", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[2];


        sqlcmdins.Parameters.Add("@duedate", SqlDbType.DateTime).Value = dataGridView1.Rows[Ournum].Cells[3];
        sqlcmdins.Parameters.Add("@xrelqty", SqlDbType.Float).Value = dataGridView1.Rows[Ournum].Cells[4];
        sqlcmdins.Parameters.Add("@purchasingfactor", SqlDbType.Float).Value = dataGridView1.Rows[Ournum].Cells[5];
        sqlcmdins.Parameters.Add("@relqty", SqlDbType.Float).Value = dataGridView1.Rows[Ournum].Cells[6];
        sqlcmdins.Parameters.Add("@jobnum", SqlDbType.NVarChar, 20).Value = dataGridView1.Rows[Ournum].Cells[7];
        sqlcmdins.Parameters.Add("@assemblyseq", SqlDbType.SmallInt).Value = dataGridView1.Rows[Ournum].Cells[8];
        sqlcmdins.Parameters.Add("@jobseq", SqlDbType.SmallInt).Value = dataGridView1.Rows[Ournum].Cells[9];
        sqlcmdins.Parameters.Add("@warehousecode", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[10];
        sqlcmdins.Parameters.Add("@fob", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[11];
        sqlcmdins.Parameters.Add("@shipviacode", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[12];
        sqlcmdins.Parameters.Add("@termscode", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[13];
        sqlcmdins.Parameters.Add("@vendornum", SqlDbType.Int).Value = dataGridView1.Rows[Ournum].Cells[14];
        sqlcmdins.Parameters.Add("@purpoint", SqlDbType.Int).Value = dataGridView1.Rows[Ournum].Cells[15];
        sqlcmdins.Parameters.Add("@linedesc", SqlDbType.NVarChar, 50).Value = dataGridView1.Rows[Ournum].Cells[16];
        sqlcmdins.Parameters.Add("@ium", SqlDbType.NVarChar, 10).Value = dataGridView1.Rows[Ournum].Cells[17];
        sqlcmdins.Parameters.Add("@unitprice", SqlDbType.Float).Value = dataGridView1.Rows[Ournum].Cells[18];
        sqlcmdins.Parameters.Add("@docunitprice", SqlDbType.Float).Value = dataGridView1.Rows[Ournum].Cells[19];
        sqlcmdins.Parameters.Add("@taxable", SqlDbType.Bit).Value = dataGridView1.Rows[Ournum].Cells[20];
EN

回答 1

Stack Overflow用户

发布于 2017-07-20 20:40:29

您的问题是您试图将Cell传递到存储过程中。您需要传入单元格值。

此外,因为您在foreach调用的末尾放置了一个';‘,所以在行周围的循环什么也做不了。假设您正在尝试插入datagridview中的所有行,您将需要如下内容...

代码语言:javascript
复制
        using (SqlConnection sqlcn1 = new SqlConnection("My Server Connection String"))
        {
            sqlcn1.Open();

            //Stored Procedure
            using (SqlCommand sqlcmddel = new SqlCommand("My_Stored_Procedure", sqlcn1))
            {
                sqlcmddel.CommandType = CommandType.StoredProcedure;
                sqlcmddel.ExecuteNonQuery();
            }

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                using (SqlCommand sqlcmdins = new SqlCommand("My_Stored_Procedure", sqlcn1))
                {
                    sqlcmdins.CommandType = CommandType.StoredProcedure;

                        //Stored Procedure
                    sqlcmdins.Parameters.Add("@sugnum", SqlDbType.Int).Value = row.Cells[0].Value;
                    sqlcmdins.Parameters.Add("@sugtype", SqlDbType.NVarChar, 50).Value = row.Cells[1].Value;
                    sqlcmdins.Parameters.Add("@buyerid", SqlDbType.NVarChar, 50).Value = row.Cells[2].Value;


                    sqlcmdins.Parameters.Add("@duedate", SqlDbType.DateTime).Value = row.Cells[3].Value;
                    sqlcmdins.Parameters.Add("@xrelqty", SqlDbType.Float).Value = row.Cells[4].Value;
                    sqlcmdins.Parameters.Add("@purchasingfactor", SqlDbType.Float).Value = row.Cells[5].Value;
                    sqlcmdins.Parameters.Add("@relqty", SqlDbType.Float).Value = row.Cells[6].Value;
                    sqlcmdins.Parameters.Add("@jobnum", SqlDbType.NVarChar, 20).Value = row.Cells[7].Value;
                    sqlcmdins.Parameters.Add("@assemblyseq", SqlDbType.SmallInt).Value = row.Cells[8].Value;
                    sqlcmdins.Parameters.Add("@jobseq", SqlDbType.SmallInt).Value = row.Cells[9].Value;
                    sqlcmdins.Parameters.Add("@warehousecode", SqlDbType.NVarChar, 50).Value = row.Cells[10].Value;
                    sqlcmdins.Parameters.Add("@fob", SqlDbType.NVarChar, 50).Value = row.Cells[11].Value;
                    sqlcmdins.Parameters.Add("@shipviacode", SqlDbType.NVarChar, 50).Value = row.Cells[12].Value;
                    sqlcmdins.Parameters.Add("@termscode", SqlDbType.NVarChar, 50).Value = row.Cells[13].Value;
                    sqlcmdins.Parameters.Add("@vendornum", SqlDbType.Int).Value = row.Cells[14].Value;
                    sqlcmdins.Parameters.Add("@purpoint", SqlDbType.Int).Value = row.Cells[15].Value;
                    sqlcmdins.Parameters.Add("@linedesc", SqlDbType.NVarChar, 50).Value = row.Cells[16].Value;
                    sqlcmdins.Parameters.Add("@ium", SqlDbType.NVarChar, 10).Value = row.Cells[17].Value;
                    sqlcmdins.Parameters.Add("@unitprice", SqlDbType.Float).Value = row.Cells[18].Value;
                    sqlcmdins.Parameters.Add("@docunitprice", SqlDbType.Float).Value = row.Cells[19].Value;
                    sqlcmdins.Parameters.Add("@taxable", SqlDbType.Bit).Value = row.Cells[20].Value;

                    sqlcmdins.ExecuteNonQuery();
                }
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45214350

复制
相关文章

相似问题

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