PAIP.從DATATABLE動態生成表頭

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

相關文章
相關標籤/搜索