如何根据其他单元格ID填充datagridview单元格?

时间:2020-09-27 14:36:59

标签: c# sql winforms datagridview

我有一个Access数据库,该数据库的一列中具有名称ID-s,我在第一列中填充了这些ID-(38、51、88),而我想做的就是基于这些ID-s想要用Access数据库中但另一个表中的其他一些数据填充最后选择的列。

例如,ID 38将在该行中给我一个价格或名称。

enter image description here

我尝试了很多次,但是找不到解决方案,而且我不知道是否必须为此使用SQL。

我获得了所需的SQL代码,但是我不知道如何将其用于datagridview。

我用类似的东西来填充这样的组合框:

        OleDbConnection connection = new OleDbConnection();

            connection.ConnectionString = "the connection string";

        connection.Open();

        string query2 = "SELECT Name From Names";
        command.CommandText = query2;

        OleDbDataReader reader2 = command.ExecuteReader();

        while (reader2.Read())
        {
            Combobox1.Items.Add(reader2["Name"].ToString());
        }
        connection.Close();

现在我认为我应该在if语句中检查38 ID是否在DataGridView中,然后在Access表的同一行中用该值填充另一个单元格。

1 个答案:

答案 0 :(得分:0)

是否要使用来自另一个表的相应价格和名称填充datagridview?

这是您可以参考的演示。

private void btnSetPriceName_Click(object sender, EventArgs e)
{
    string constr = @"connection string";

    // create sql string
    StringBuilder strSQL = new StringBuilder();
    strSQL.Append("select Price, Name from PriceName where ");

    for(int i = 0;i< dataGridView1.Rows.Count - 1;i++)
    {
        // get Id from string, like "38/1/R"
        string Id = dataGridView1.Rows[i].Cells[0].Value.ToString().Split('/')[0];
        if (i == 0)
            strSQL.Append("Id = " + Id);
        else
            strSQL.Append("or Id = " + Id);
    }

    using (OleDbConnection conn = new OleDbConnection(constr))
    {
        OleDbCommand cmd = new OleDbCommand (strSQL.ToString(), conn);
        conn.Open();
        try
        {
            OleDbDataReader reader = cmd.ExecuteReader();
            if (reader != null && reader.HasRows)
            {
                int rowindex = 0;
                while (reader.Read())
                {
                    // Set Price/Name column value
                    dataGridView1.Rows[rowindex].Cells["Price"].Value = reader[0].ToString().Trim();
                    dataGridView1.Rows[rowindex].Cells["Name"].Value = reader[1].ToString().Trim();
                    rowindex++;
                }
            }
            reader.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine("\nError:\n{0}", ex.Message);
        }
    }
}