PAIP.從DATATABLE動態生成表頭數據庫
有時候,從數據庫中獲得的datatable列太多了,一一綁定到界面上的GRID太麻煩了,能夠動態綁定..ide
/*
* 從數據庫生成的DATABLE列名爲textbox1,textbox2,......
* title爲漢字表頭,順序與 datable 的列後綴(textboxids )順序一一對應
*/
int startAutoColumnPosition = 5; //自動生成列開始位置..前邊能夠自定義固定列.
string prefix = "textbox"; //databable裏邊列名前綴
private void usermain_Load(object sender, EventArgs e)
{
DataTable dt = rec.query();
this.dataGridView1.DataSource = dt;this
//表格標頭
string title="比例,單重,供貨時間,備註,合計(KG),最低重量,筋條數,送貨時間1,合格數量1,重量1,結算單重1,送貨時間2,合格數量2,重量2,結算單重2,送貨時間3,合格數量3,重量3,結get
算單重3,送貨時間4,合格數量4,重量4,結算單重4,送貨時間5,,合格數量5,重量5,結算單重5,送貨時間6,合格數量6,重量6,結算單重6,送貨時間7,,合格數量7,重量7,結算單重7,送貨時間8,合格數量8,重string
量8,結算單重8,送貨時間9,,合格數量9,重量9,結算單重9,送貨時間10,合格數量10,重量10,結算單重10";it
//datable column 後綴
string textboxids = "7,8,9,10,11,12,19,18,17,16,14,15,13,26,25, 24,23,21,22,20,55,57,56 ,48,33,29,32, 27,31,28,30, 41,40,36,39,34,38,35,37, 50,49,44,47,42,46,43,45";io
setTitleOnDataView(title, textboxids);table
}class
private void setTitleOnDataView(string title, string textboxids)
{object
int ori=startAutoColumnPosition;
//循環生成表頭.HeaderText
foreach (DataGridViewTextBoxColumn item in this.dataGridView1.Columns)
{
String tltle=setColumnHeaderText(item.DataPropertyName, title, textboxids);
if(!tltle.Equals("null"))
{
item.HeaderText = tltle;
item.DisplayIndex=ori+2;
}
startAutoColumnPosition++;
}
//把不須要顯示的列頭,設置爲隱藏
foreach (DataGridViewTextBoxColumn item in this.dataGridView1.Columns)
{
if (item.HeaderText.ToLower().StartsWith("text"))
item.Visible = false;
}
}
//get ColumnHeaderText
private string setColumnHeaderText(string DataPropertyName, string title, string textboxids)
{
string r = "";
string[] ides = textboxids.Split(",".ToCharArray());
string[] titlesArr = title.Split(",".ToCharArray());
int i=0;
foreach (string item in ides)
{
string id = prefix + item;
if(id.Equals(DataPropertyName.ToLower()))
{
return titlesArr[i]; } i++; } return "null"; }