C# 我对linkdatagridview和custome数据库列有问题

C# 我对linkdatagridview和custome数据库列有问题,c#,.net,database,winforms,datagridview,C#,.net,Database,Winforms,Datagridview,我有sql db表包含ID和项。 另外,我有winform,我使用DataGrid类型“DataGridViewComboxColumn”从db表中选择项目,它工作得非常好 现在的问题是,当我从“DataGridViewComboBoxColumn”中选择项目时,我需要向DGV中的第二列显示以下“ID列”。 所以,当用户从gdv ComboBoxColumn中选择项时,我需要帮助将数据库中的特定列(ID)与datagrid列类型“DataGridViewTextBoxColumn”上的特定列链接

我有sql db表包含ID和项。 另外,我有winform,我使用DataGrid类型“DataGridViewComboxColumn”从db表中选择项目,它工作得非常好 现在的问题是,当我从“DataGridViewComboBoxColumn”中选择项目时,我需要向DGV中的第二列显示以下“ID列”。 所以,当用户从gdv ComboBoxColumn中选择项时,我需要帮助将数据库中的特定列(ID)与datagrid列类型“DataGridViewTextBoxColumn”上的特定列链接起来

注:代码工作的第一个scop,并从db向我提供项目。 第二个代码范围不工作,我无法处理它从db表中检索ID

答案就在这里

foreach(dataGridView1.Rows中的DataGridViewRow行) {


警告:您的代码很容易受到注入攻击。您需要确保正确地参数化SQL语句;不要盲目地注入值。好的@Larnu。现在的主要任务是解决我的问题,在这之后,我将首先关闭错误修复安全缺陷,然后担心让代码给出您想要的结果。@Larnu there尚未发布,除非任务完成,否则即使整个项目也不会发布!代码已将Items表中的所有行存储在
ComboColumn.DataSource
中,因此无需在
dataGridView1\u CellContentClick
中再次查询数据库。而且,不必要的查询也没有意义;
Name='“+ComboColumn+”“
不会产生您认为它会产生的效果。一旦您知道如何获取下拉列表中选择的值,请使用该值查询存储在
ComboColumn.DataSource
中的数据表。使用
CellContentClick
启动ID检索也很奇怪。
private void Purchases_Load(object sender, EventArgs e)
{
com.Connection = con;
con.Open();
com.CommandText = "select * from Items";
com.ExecuteNonQuery();
DataTable dt7 = new DataTable();
SqlDataAdapter da7 = new SqlDataAdapter(com);
da7.Fill(dt7);
ComboColumn.DataSource = dt7;
ComboColumn.DisplayMember = "Name";
}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
com.Connection = con;
com.CommandText = "select ID from Items where Name = '" + ComboColumn + "' ";
con.Open();
com.ExecuteNonQuery();
SqlDataReader dr;
dr = com.ExecuteReader();
while (dr.Read())
{
    string id = (string)dr["ID"].ToString();
}
con.Close();
}
            DataGridViewComboBoxCell comboBoxCell = (row.Cells[2] as DataGridViewComboBoxCell);

           
            comboBoxCell.Items.Add("Select Goods");

            
            comboBoxCell.Value = "Select Goods";

            
            DataTable dt_1 = this.GetData("SELECT ID,Name from Goods");

           
            foreach (DataRow drow in dt_1.Rows)
            {
                
                string customerId = drow[0].ToString();

               
                comboBoxCell.Items.Add(drow[0] + "-" + drow[1]);

                
                if (customerId != "3")
                {
                   
                    if (row.Cells[2].Value.ToString() == customerId)
                    {
                        comboBoxCell.Value = drow[1];
                    }
                }
            }