找到GridView下的自訂控制項
紀錄一下問題及解法
問題描述:
在Gridview中拉一個Calendar控制項,當選取列進入編輯時會跳出日曆,當選取日期改變的時候,修改相對應的TextBox欄位,原先寫法如下:
{
TextBox t1 = (TextBox)GridView1.FindControl("txtEndDate");
Calendar c1 = (Calendar)GridView1..FindControl("Calendar1");
t1.Text = c1.SelectedDate.ToString("yyyyMMdd");
}
結果沒反應=.= 後來查了一下
[習題] FindControl 簡單練習--抓取大控制項(GridView/ListView/FormView/DetailsView)裡的「子控制項」
發現FindControl只能找到下一層的控制項所以改寫如下
public int currentRowIndex;
//當進入編輯模式將選取的列記錄下來
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
currentRowIndex = e.NewEditIndex;
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
TextBox t1 = (TextBox)GridView1.Rows[currentRowIndex].Cells[3].FindControl("txtEndDate");
Calendar c1 = (Calendar)GridView1.Rows[currentRowIndex].Cells[3].FindControl("Calendar1");
t1.Text = c1.SelectedDate.ToString("yyyyMMdd");
}