我正在使用返回數據集的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然後綁定到我的數據網格。
我該怎麼做?
我正在使用返回數據集的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然後綁定到我的數據網格。
我該怎麼做?
忽略您擁有比您需要的數據更多的事實。將AutoGenerateColumns
設置爲false
。爲a3
和a4
創建BoundColumns
。
我整個表綁定,然後設置coulmns的知名度如下
dgvMain.Columns[ColumnA3_Name].Visible = true;
dgvMain.Columns[ColumnA1_Name].Visible = false;
我建議你閱讀從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;
}
您可以隨時嘗試設置特定列的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();
}
}
祝你好運!
嗨下面的代碼可以用來
//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);
我想這和它的作品。
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
如果您指定了您的平臺,這將有所幫助。我假設ASP.NET和C#,但真正知道 - 可能是僞代碼。你可以編輯/重新更具體嗎? – tvanfosson 2008-10-16 11:48:08