2012-07-31 49 views
1

我想通過c#訪問一個日曆控件,當gridview行被編輯。但是,我不確定如何通過C#訪問後面的內容。訪問asp.net gridview編輯控件

我想做到以下幾點:

cal_SelectionChanged(object sender, EventArgs e) 
{ 
date = cal.SelectedDate 

blah blah... 
} 

然而,由於控制是在GridView編輯模板,我不能找到一種方法來訪問這個到C#,相比如果日曆只是一個元素在一個正常的asp.net頁面上。

感謝

+1

如果你有'cal_SelectionChanged'作爲控制事件處理程序,你能不能只需使用'sender'? (它應該是日曆控件本身 - 你只需要將它裝箱到正確的類型) – freefaller 2012-07-31 16:20:08

+0

你介意發佈一個例子嗎?我不確定你的意思。謝謝 – Mike91 2012-07-31 16:30:31

回答

1

正如你似乎是知道的,內Template基於控件(如<asp:Repeaters>)控件不能直接作爲你控制直接放置到頁面/用戶控件/母版進行訪問。使用控件中特定項目上的「FindControl」可以找到它,但應該有一個更簡單的方法...

在這種情況下,您應該能夠在日曆控件上設置一個SelectionChanged事件處理程序到你的代碼隱藏的功能。 (這是假設你使用內置的Calendar control)喜歡的東西...

<asp:Calendar runat="server" OnSelectionChanged="cal_SelectionChanged"> ... </asp:Calendar> 

當被稱爲像這樣的一個事件,導致該事件(在這種情況下,日曆控件)的對象被傳遞到該功能通過sender參數。

這意味着,而不是試圖找出被點擊的日曆,你根本就做到這一點...

cal_SelectionChanged(object sender, EventArgs e) 
{ 
    Calendar cal = (Calendar)sender; 
    date = cal.SelectedDate; 
    blah blah... 
} 
+0

謝謝freefaller。這很有道理。當用戶點擊編輯時,gridview編輯窗格中的日曆控件旁邊有一個文本框。有沒有簡單的方法讓選定的日期出現在文本框中?再次,問題是我無法訪問文本框。通常我會做textbox.Text = date.toString();或類似的規定。 – Mike91 2012-07-31 16:47:11

+0

@ Mike91,你是否在與上述相同的功能中談論?如果是這樣,請嘗試類似(未測試)...'TextBox txt =(TextBox)cal.Parent.FindControl(「myTxtId」);'**!UPDATE!**使用'cal',不要使用'sender ' – freefaller 2012-07-31 16:48:57

+0

我之前嘗試過使用發件人,但沒有成功。我嘗試了'cal'技術,而且效果很好。非常感謝您的時間freefaller! – Mike91 2012-07-31 16:54:21