close

早期在asp.net 要顯示DB的內容通常是

TextBox1.Text = Dt.Rows[0][0].ToString();

.....

逐行的寫

最近有個案子欄位爆多如果這樣寫 寫到手斷也寫不完加上日後維護也不容易

後來想到可以利用 FindControl 來掃我要塞入的Control 

解決方式如下

1.把Table 的欄位名稱 設為 跟 Control 的名稱一致

2.取資料塞到DataTable

   DataTable Dts = new DataTable();

   Dts=.................................

3.用Dts.Columns  跑for 迴圈

   for (int i = 0; i < Dts.Columns.Count; i++)
      {

                            if (Page.FindControl(Dts.Columns[i].ColumnName) != null)       //利用欄位明稱Search 並判斷是否存在
                            {
                                string cType = Page.FindControl(Dts.Columns[i].ColumnName).GetType().Name;    // 抓取該control 的型態
                                if (typeof(TextBox).Name == cType)    
                                {
                                    TextBox tbx = (TextBox)Page.FindControl(Dts.Columns[i].ColumnName);
                                    tbx.Text = Dts.Rows[0][i].ToString();

                                }
                                else if (typeof(DropDownList).Name == cType)
                                {
                                    DropDownList ddls = (DropDownList)Page.FindControl(Dts.Columns[i].ColumnName);
                                    ddls.SelectedValue = Dts.Rows[0][i].ToString();

                                }
                            }

     }

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JosephChou 的頭像
    JosephChou

    Joseph A-Sa-BLue

    JosephChou 發表在 痞客邦 留言(0) 人氣()