2016-08-28 162 views
0

我有一個從SQL查詢中獲取數據的DataTable(我知道我如何做它很容易受到SQL注入的影響,但爲了解決此問題,我使用了一個正常的SQL查詢只是爲了顯示它比三層級簡單)。我想要做的是更改datagridview中顯示的列。更改,隱藏和顯示DataGridView中的DataTable中的列

前面的例子,我想隱藏'ProdID'列,我想將'ProdDesc'列更改爲'Product Name'等等。

這是我迄今爲止,但沒有關於它在所有工作:

query = "Select * From Product"; 
Products = db.GetDataTable(query);   
Products.Columns[1].ColumnName = "Product Name"; 
Products.Columns[2].ColumnName = "Currently in stock"; 
Products.Columns[3].ColumnName = "Product Price \"R\""; 
Products.Columns[4].ColumnName = "Profit Per Product\"R\""; 
Products.Columns[5].ColumnName = "Product Type Code"; 
Products.Columns.Add("Product Type Name"); 
foreach (DataRow dr2 in Products.Rows) 
{ 
    string query11 = "Select TypeDesc From Product Type Where TypeNo ='" + dr2[6].ToString().Trim() + "'"; 
    DataTable Names = db.GetDataTable(query11); 
    dr2[6] = Names.Rows[0][0]; 
} 
dgvProdInformation.DataSource = Products; 

這是數據庫列如何: Database

回答

0

嘗試這樣的改變列名,

Products.Columns[intColumnIndex].HeaderText = "Something"; 

並用此隱藏ID列(如TaW告訴)

Products.Columns["ProdID"].Visible = false; 

Hope help,

+0

除了'Products.Columns [「ProdID」]。Visible = false;' – TaW

+0

@TaW謝謝,更新。 – Berkay

0

首先創建一個DataTable並根據需要定義列。然後將數據從sql傳輸到您的自定義表。例如:

DataTable dt=new DataTable(); 

DataColumn clm0=new DataColumn("ColumnHeader",typeof(string)) 
. 
. 

dt.Columns.Add(clm0); 
. 
. 

foreach(DataRow item in Products.Rows) 
{ 
DataRow new_row=dt.NewRow(); 

new_row["ColumnHeader"]=item["Column"] 
dt.Rows.Add(new_row); 
} 

dgvProdInformation.DataSource=dt; 

希望這會有所幫助。