【问题标题】:How to fill up datagridview cells based on other cell IDs?如何根据其他单元格 ID 填充 datagridview 单元格?
【发布时间】:2021-01-13 07:04:09
【问题描述】:

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

例如,ID 38 会在该行中为我提供价格或名称。

我尝试了很多次,但找不到解决方案,我不知道是否必须为此使用 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 表同一行中的值填充另一个单元格。

【问题讨论】:

    标签: c# sql winforms datagridview


    【解决方案1】:

    您想用另一个表中的相应价格和名称填充数据网格视图吗?

    这是一个你可以参考的演示。

    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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2017-08-30
      • 2020-10-21
      相关资源
      最近更新 更多