私のDataTable
にはデータベースからフェッチされた3つの列がありますが、その2つの列だけをDataGridView
にバインドする必要があります。手伝ってくれませんか?
自分で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;
上記の回答に従って列を追加し、設定することを忘れないでください。
dataGridView1.AutoGenerateColumns = false;
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];
}
間違いなく動作します。
これは少し前に尋ねられたので、おそらくこの答えは必要ないでしょう...うまくいけば、他の人が役に立つと思います。
私は同様のことをしなければならず、最も簡単な解決策は、(データが格納されている)テーブルの一時的なコピーを作成し、問題の列を単に削除することであることがわかりました。例えば:
DataTable temp = YourDataTable;
temp.Columns.Remove(temp.Columns[2]) // Will remove the third column for example
YourDataTable.DataSource = temp;
YourDataTable.DataBind();
これでうまくいくと思います!
乾杯!
必要な列を含む新しい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;
DataTableをDataGridViewにバインドした後、不要な列を非表示にします。
dataGridView1.DataSource = datatable;
dataGridView1.Columns["ColumnName"].Visible = false;