给出数据源后如何绑定datagridview?

时间:2013-10-19 17:40:45

标签: c# winforms

您好,先生,我有一个问题 我正在将数据绑定到datagridview,就像这样

 dataGridView1.DataSource = dt1;

现在基于datagridview中的一个列,我没有向datagridview添加任何列,例如 enter image description here

这是在绑定数据源

之后将列绑定到动态列的编码
for (int j = 0; j < i; j++)
 {
if (j >= (dataGridView1.Columns.Count - 10))
{
  DataGridViewColumn col = new DataGridViewTextBoxColumn();
 col.DataPropertyName = "";
 col.HeaderText = j.ToString();
 col.Name = j.ToString();
   dataGridView1.Columns.Add(col);
  }
 }

所以现在我的真正问题就开始了 现在从数据库我必须绑定此动态列的值 所以代码看起来像

foreach (DataGridViewRow dgvr in this.dataGridView1.Rows)
                    {
                        foreach (DataGridViewColumn dgvc in this.dataGridView1.Columns)
                        {
                            string query3 = "select pcs from purchase_sr_details where purchase_details_id='" + dataGridView1.Rows[dgvr.Index].Cells[1].Value + "'";


                            if (dgvc.Index > 8)
                            {
                                DataTable dt2 = connection.getexecuted(query3);
                                if (dt2.Rows.Count > 0)
                                {

                                    for (int i = 0; i < dt2.Rows.Count; i++)
                                    {
                                        dataGridView1.Rows[dgvr.Index].Cells[""+i+""].Value = dt2.Rows[i]["pcs"].ToString();
                                    }


                                }


                            }


                        }
                    }

所有工作正常但我无法将值恢复到列没有显示任何检索到的动态列生成但值没有绑定到那一个非常混淆我被困在这一天

1 个答案:

答案 0 :(得分:1)

我认为你的问题是你正在使用绑定和非绑定的混合。如果绑定到datagridview,则无法直接更改单元格。你有两个选择:

  1. 更改原始查询,以便获取动态列。让sql完成工作,而不是你的代码。这就是我想做的事。
  2. 如果不可能,您需要获取网格绑定的数据表,将列添加到其中(即DataColumns),然后重新绑定到新数据表。