早期在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();
}
}
}
留言列表