【发布时间】: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