【问题标题】:No mapping exists from object type System.Windows.Forms.DataGridViewTextBoxCell to a known managed provider native type不存在从对象类型 System.Windows.Forms.DataGridViewTextBoxCell 到已知托管提供程序本机类型的映射
【发布时间】:2020-01-23 19:48:40
【问题描述】:

我创建了一个带有“提交”按钮列的数据网格视图。在这个过程中,我试图在给定几个参数的情况下运行 SQL 查询。当我这样做时,我得到以下信息:

对象类型不存在映射 System.Windows.Forms.DataGridViewTextBoxCell 到已知托管 提供者原生类型。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    try
    {
        Image img2;
        string imagePath = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
        img2 = Image.FromFile(@"C:\receipts\" + imagePath);
        var senderGrid = (DataGridView)sender;
        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
        {
            string SqlAttach = "INSERT INTO WeeklyReceipts " +
                                        "(StaffID,RU,ReceiptImage,Amount,ReceiptDate,Category,Comments,OriginalFileName) " +
                                " VALUES " +
                                        "( '" + "@StaffID, @RU, @ReceiptImage, @Amount, @ReceiptDate, @Category, @Comments, @OriginalFileName)";
            SqlCommand sc = new SqlCommand(SqlAttach, conFB);
            conFB.Open();
            sc.Parameters.Clear();
            sc.Parameters.AddWithValue("@StaffID", comboBox2.Text);                                                 
            sc.Parameters.AddWithValue("@RU", comboBox1.Text);                                                      
            sc.Parameters.AddWithValue("@Amount", dataGridView1.Rows[e.RowIndex].Cells[3]);                  
            sc.Parameters.AddWithValue("@ReceiptDate", dataGridView1.Rows[e.RowIndex].Cells[1]);        
            sc.Parameters.AddWithValue("@Category", dataGridView1.Rows[e.RowIndex].Cells[2]);            
            sc.Parameters.AddWithValue("@Comments", dataGridView1.Rows[e.RowIndex].Cells[4]);              
            sc.Parameters.AddWithValue("@OriginalFileName", dataGridView1.Rows[e.RowIndex].Cells[0]);

            sc.ExecuteNonQuery();

            conFB.Close();
        }
    }
    catch (Exception ex3)
    {
        MessageBox.Show(ex3.Message);
        conFB.Close();
    }
}

【问题讨论】:

  • dataGridView1.Rows[e.RowIndex].Cells[3](和其他)返回一个DataGridTextBoxCell类型的对象。您需要获取 Value 属性,以便传递一个字符串。
  • 如此简单的疏忽,正是我所需要的,谢谢!!!

标签: c# visual-studio


【解决方案1】:

dataGridView1.Rows[e.RowIndex].Cells[3] (和其他)返回一个对象 DataGridTextBoxCell 类型。您需要获取 Value 属性,以便 你正在传递一个字符串。

——疯狂的反思

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多