0

こんにちは、質問が 1 つあります。データをこのように datagridview にバインドしています

 dataGridView1.DataSource = dt1;

現在、datagridview の列の 1 つに基づいて、たとえば datagridview に列を追加していません ここに画像の説明を入力

これは、データソースをバインドした後に列を動的列にバインドするコーディングです

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


                                }


                            }


                        }
                    }

すべて正常に動作していますが、値を列に取得できません何も表示されません取得された動的列が生成されましたが、値がその列にバインドされていませんこれは非常に混乱しています私はこれで2日間立ち往生しています

4

1 に答える 1

1

あなたの問題は、バインディングと非バインディングの混合物を使用していることだと思います。データグリッドビューにバインドしている場合、セルを直接変更することはできません。次の 2 つの選択肢があります。

  1. 元のクエリを変更して、動的列も取得できるようにします。あなたのコードではなく、SQLに仕事をさせてください。それが私がしようとすることです。
  2. それが不可能な場合は、グリッドがバインドされているデータ テーブルを取得し、そこに列 (つまり DataColumns) を追加して、新しいデータ テーブルに再バインドする必要があります。
于 2013-10-19T19:17:29.693 に答える