2008-10-16 50 views
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然後綁定到我的數據網格。

我該怎麼做?

+0

如果您指定了您的平臺,這將有所幫助。我假設ASP.NET和C#,但真正知道 - 可能是僞代碼。你可以編輯/重新更具體嗎? – tvanfosson 2008-10-16 11:48:08

回答

11

忽略您擁有比您需要的數據更多的事實。將AutoGenerateColumns設置爲false。爲a3a4創建BoundColumns

1

我整個表綁定,然後設置coulmns的知名度如下

dgvMain.Columns[ColumnA3_Name].Visible = true; 
dgvMain.Columns[ColumnA1_Name].Visible = false; 
5

我建議你閱讀從4GuysFromRolla的人this文章誰需要DataGrid Web控制有很好的理解。

注意:由於此問題已得到解答。我想澄清一下需要做些什麼,以防其他人想知道。

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; 
} 
0

您可以隨時嘗試設置特定列的DataPropertyName屬性以匹配DataTable中的內容。然後將該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(); 
    } 
} 

祝你好運!

0

嗨下面的代碼可以用來

//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); 

我想這和它的作品。

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 
相關問題