找到GridView下的自訂控制項

找到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");        
    }