web-dev-qa-db-ja.com

データテーブルの特定の列をDataGridViewにバインドする方法

私のDataTableにはデータベースからフェッチされた3つの列がありますが、その2つの列だけをDataGridViewにバインドする必要があります。手伝ってくれませんか?

11
Sangeetha

自分でDataGridViewの列を作成します。このようなものを試してください。

DataGridView dataGridView1 = new DataGridView();
BindingSource bindingSource1 = new BindingSource();

dataGridView1.ColumnCount = 2;

dataGridView1.Columns[0].Name = "Field1";
dataGridView1.Columns[0].DataPropertyName = "Field1";
dataGridView1.Columns[1].Name = "Field2";
dataGridView1.Columns[1].DataPropertyName = "Field2";

bindingSource1.DataSource = GetDataTable();
dataGridView1.DataSource = bindingSource1;
25
JoeyRobichaud

上記の回答に従って列を追加し、設定することを忘れないでください。

dataGridView1.AutoGenerateColumns = false;
18
Nomi Ali
private void Form1_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("connection string");
        SqlDataAdapter adp = new SqlDataAdapter("select  Fieldname1,fieldname2 from Table Name", con);
        DataSet ds = new DataSet();
        ds.Clear();
        adp.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            dataGridView1.DataSource = ds.Tables[0];
  }

間違いなく動作します。

2
sabu

これは少し前に尋ねられたので、おそらくこの答えは必要ないでしょう...うまくいけば、他の人が役に立つと思います。

私は同様のことをしなければならず、最も簡単な解決策は、(データが格納されている)テーブルの一時的なコピーを作成し、問題の列を単に削除することであることがわかりました。例えば:

DataTable temp = YourDataTable;
temp.Columns.Remove(temp.Columns[2]) // Will remove the third column for example
YourDataTable.DataSource = temp;
YourDataTable.DataBind();

これでうまくいくと思います!

乾杯!

1
Adrian

必要な列を含む新しいDataTableを作成し、データセットから行を追加できます。次に、新しく作成されたDataTableでDataGridを初期化できます。

dt = new DataTable();          
dt_Property.Columns.Add("Field1");
dt_Property.Columns.Add("Field2");
int i = 0;
DataRow row = null;
foreach (DataRow r in ds.Tables[0].Rows)
{               
    row = dt.NewRow();                    
    row["Field1"] = ds.Tables[0].Rows[i][1];
    row["Field2"] = ds.Tables[0].Rows[i][2];
    dt_Property.Rows.Add(row);   
    i = i + 1;
}

dataGridView1.DataSource = dt;
1
Sangeetha

DataTableをDataGridViewにバインドした後、不要な列を非表示にします。

dataGridView1.DataSource = datatable;
dataGridView1.Columns["ColumnName"].Visible = false;
0
saravanajd