27

DataTableDataGridViewにバインドする必要があります。私はこれをします:

        DTable = new DataTable();
        SBind = new BindingSource();
        //ServersTable - DataGridView
        for (int i = 0; i < ServersTable.ColumnCount; ++i)
        {
            DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name));
        }

        for (int i = 0; i < Apps.Count; ++i)
        {
            DataRow r = DTable.NewRow();
            r.BeginEdit();
            foreach (DataColumn c in DTable.Columns)
            {
                r[c.ColumnName] = //writing values
            }
            r.EndEdit();
            DTable.Rows.Add(r);
        }
        SBind.DataSource = DTable;
        ServersTable.DataSource = SBind;

しかし、私が得たのはDataTable ADDS NEW列を私のDataGridView だけです。これは必要ありません。既存の列の下に書き込むだけです。

4

7 に答える 7

29

これを試して:

    ServersTable.Columns.Clear();
    ServersTable.DataSource = SBind;

既存のすべての列をクリアしたくない場合は、既存の列DataPropertyNameごとに次のように設定する必要があります。

for (int i = 0; i < ServersTable.ColumnCount; ++i) {
  DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name));
  ServersTable.Columns[i].DataPropertyName = ServersTable.Columns[i].Name;
}
于 2013-10-01T11:15:40.133 に答える
15

さらに良い:

DataTable DTable = new DataTable();
BindingSource SBind = new BindingSource();
SBind.DataSource = DTable;
DataGridView ServersTable = new DataGridView();

ServersTable.AutoGenerateColumns = false;
ServersTable.DataSource = DTable;

ServersTable.DataSource = SBind;
ServersTable.Refresh();

バインド可能なソースに、DataTable にバインドされていることを伝えています。次に、DataGridView に列を自動生成しないように指示する必要があるため、手動でコントロールに入力した列のデータのみが取り込まれます。 .. 最後にコントロールを更新して、データバインドを更新します。

于 2013-10-01T11:20:59.037 に答える
0
foreach (DictionaryEntry entry in Hashtable)
{
    datagridviewTZ.Rows.Add(entry.Key.ToString(), entry.Value.ToString());
}
于 2014-02-20T19:03:35.857 に答える
0

たとえば、次の 2 つの手順に従って、DataTable 'Users' を DataGridView に設定します。手順 1 - すべてのユーザーを取得します。

public DataTable  getAllUsers()
    {
        OracleConnection Connection = new OracleConnection(stringConnection);
        Connection.ConnectionString = stringConnection;
        Connection.Open();

        DataSet dataSet = new DataSet();

        OracleCommand cmd = new OracleCommand("semect * from Users");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = Connection;

        using (OracleDataAdapter dataAdapter = new OracleDataAdapter())
        {
            dataAdapter.SelectCommand = cmd;
            dataAdapter.Fill(dataSet);
        }

        return dataSet.Tables[0];
    }

ステップ 2- 戻り結果を DataGridView に設定します。

public void setTableToDgv(DataGridView DGV, DataTable table)
    {
        DGV.DataSource = table;
    }

使用例:

    setTableToDgv(dgv_client,getAllUsers());
于 2018-12-17T21:53:29.500 に答える