2

データセットを返す Web サービスを使用しています。このデータセットには 5 つのテーブルがあります。たとえば、テーブル A、B、C、D、E とします。テーブル A を使用します。

そう

DataTable dt = new DataTable()
dt = dataset.Table["A"]

このデータテーブルには、列 a1、a2、a3、a4、a5、a6、a7 があります。

列 a3 と a4 のみを取得し、それをデータグリッドにバインドしたいとしましょう。

どうすればいいですか?

4

6 に答える 6

11

必要以上のデータがあるという事実を無視してください。に設定AutoGenerateColumnsfalseます。と を作成BoundColumnsします。a3a4

于 2008-10-16T11:43:47.700 に答える
5

Web コントロールを十分に理解する必要がある場合は、4GuysFromRolla のこの記事を読むことをお勧めします。DataGrid

注:この質問はすでに回答済みです。他の誰かが疑問に思っている場合に備えて、何をする必要があるかを明確にしたいと思います。

DataSet ds;

//Get Data
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        // Create the command and set its properties.
        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText = "GetMyData";
        command.CommandType = CommandType.StoredProcedure;

        ds = connection.ExecuteDataSet();
    }
if(ds !=null && ds.Tables.Count > 0)
{
    dg.DataSource = ds.Tables[0];
    // disable autogeneration of columns
    dg.AutoGenerateColumns = false;
    //Hide unecessary columns
    dg.Columns["a3"].Visible = false;
    dg.Columns["a4"].Visible = false;
}
于 2008-10-16T12:11:18.393 に答える
1

こんにちは、次のコードを使用できます

//It represent name of column for which you want to select records
string[] selectedColumns = new[] { "a3", "a4" }; 

DataTable tableWithSelectedColumns = new DataView(dataset.Table["A"]).ToTable(false,  selectedColumns);

私はこれを試してみましたが、うまくいきます。

于 2013-10-01T11:22:54.870 に答える
1

テーブル全体をバインドしてから、列の可視性を次のように設定します

dgvMain.Columns[ColumnA3_Name].Visible = true;
dgvMain.Columns[ColumnA1_Name].Visible = false;
于 2008-10-16T11:44:06.173 に答える
0
    Dim DT As DataTable = YourDT

    DGV.DataSource = dt
    DGV.AutoGenerateColumns = False

    Dim cc = DGV.ColumnCount

    For i = 0 To cc - 1
        DGV.Columns(i).Visible = False
    Next

    DGV.Columns("ColumnToShow").Visible = True
    DGV.Columns("ColumnToShow").Visible = True
于 2016-10-07T17:41:00.757 に答える
0

DataTable の内容と一致するように、特定の列の DataPropertyName プロパティを設定することをいつでも試みることができます。次に、その DataTable を BindingSource にバインドし、そのビンギング ソースをグリッドにバインドします。

DataTable 内の列の名前が DataGrid 列の DataPropertyNames と一致する限り、データ グリッドは一致した列のみを表示する必要があります。

私の例では、私の stred proc は次のような単純なことを行います:

ALTER PROCEDURE ps_Clients_Get
AS
BEGIN
    SELECT 
        convert(varchar(2000), path) as [Client Folder], 
        c.description as [Client Name],
        c.* 
    FROM Client c
END 
GO

そして私のC#コード:

using (DataTable dt = new DataTable())
{
    using (OdbcConnection cnDsn = new OdbcConnection(cmLocalTrackingDBDSNAME))
    {
        cnDsn.Open();
        using (OdbcCommand cmdDSN = new OdbcCommand())
        {
                  var _with1 = cmdDSN;
                  _with1.Connection = cnDsn;
                  _with1.CommandType = System.Data.CommandType.StoredProcedure;
                  _with1.CommandText = "{ CALL ps_Clients_Get }";
                  using (OdbcDataAdapter adapter = new OdbcDataAdapter())
                  {
                            dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
                            adapter.SelectCommand = cmdDSN;
                            adapter.Fill(dt);
                            bindingSourceDataLocation.DataSource = dt;
                            dataGridViewDataLocation.AutoGenerateColumns = false;

                            dataGridViewDataLocation.DataSource = bindingSourceDataLocation;
                  }
         }
         cnDsn.Close();
    }
}

幸運を!

于 2012-06-13T19:55:21.517 に答える