2011-10-09 55 views
3

我有asp.net頁面,我正在使用自定義分頁的GridView,並且在GridView中有一個DropDownList控件和基於每行控件的JavaScript,它提交表單並且必須參照到與其行相關的唯一DropDownList名稱。GridView中的DropDownList的動態名稱

通常,如果我需要操縱控件,我習慣於使用「在數據綁定到行」類型的事件「FindControl」。但在這種情況下,我不能這樣做,因爲客戶端腳本在渲染後只會引用此控件。

在網格視圖模板區域,其中DropDownList的放置,我試圖輸出的東西的排序:

... ID='<%# Eval("myID") + "_ddl" %>' ... 

..just作爲一個例子,但是編譯器/語法分析器,所述「樹皮,樹皮,咆哮樹皮「你不能這樣做,因爲DopDownList的id不能這樣分配。我也試圖在行數據綁定上分配控件的CLientID,但是它不允許這麼做,因爲這是一個只寫屬性。

是否有任何簡單的方法來實際控制ddl名稱?我真的想避免改變發生的結構。我不需要找到ddl名稱,我實際上需要使每行中的每個ddl都是唯一的。 onclick實際上來自其行中的另一個控件。不幸的是JavaScript是內聯的。問題是JavaScript正在尋找具有唯一名稱的ddl,並且在網格視圖中,ddl的名稱都是相同的。我的問題是我如何在網格視圖中強制ddl的唯一名稱ID。這可以做到嗎?它不會允許我使用上面提到的方法。

這方面的一些背景是,這個數據曾經在一個沒有分頁的普通表中。我不得不將它移動到一個gridview並做一個自定義分頁。

意見非常感謝..謝謝!

回答

1

我不確定你想要解決哪個問題。這可能是,我在下拉菜單中,我需要找到ClientId。然後使用克里斯·穆林的答案回答How do I find the Client ID of control within an ASP.NET GridView?

這是使用'<%# ((GridViewRow)Container).FindControl("ddlName").ClientID %>'

如果我需要從,那麼你可以通過網格圈在How to get cell value of gridview using JQUERY

+0

我的主要問題是DropDownList的ClientID對於GridView的每一行都不是唯一的。它混淆了基於JavaScript的行,因爲最終有25個DropDownList控件具有完全相同的名稱。所以,我的問題是,我需要控制每個DDL在呈現給客戶端時的命名方式,以便不必更改JavaScript。我可以獲得沒有問題的值,但是我的主要問題是我似乎無法控制DropDownList的ID。這似乎很奇怪。 – byten

+0

我看了一下你發佈的JQuery示例。我會看看這是否能讓我得到任何東西。但我畏縮不得不重新構建JavaScript。基本上我只是想要一個解決方案,我可以以某種方式強制我的DropDownList ID是獨一無二的...然後所有的都會很好,我不必重新研究js是如何完成的。想要真正避免它。現在,js在每行的onclick事件中內聯,並按名稱引用其行中的ddl。 – byten

+0

嗯......當我添加'ToolTip ='<%#((GridViewRow)Container).FindControl(「ddlControl」)。ClientID%>''我得到一個唯一的ID。它的形式爲'ContentPlaceHolderName_GridViewName_ControlName_RowID' –

0
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     DropDwonList objDD =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("dropdownid")); 
描述的控制範圍之外獲得下拉
+0

嗨Diniesh,謝謝你的回覆。不幸的是,上述內容不適用於我所要求的。再一次,我不想試圖找到控制的名字。我正在設置它,以便每行都有一個唯一的ID。它不允許我動態設置行的ID。 – byten

0

我花了一些時間回到這個問題。而且我不得不說,這個討論肯定幫助我走上了一條導致答案的道路。在網格視圖中提交的JavaScript表單有問題。這個解決方案最終被剝離了JavaScript,並在ImageButton控件上使用CommandName =「」,然後我必須使用Event Handler進行按鈕單擊事件,然後從EventArgs中的網格視圖的行中獲取值,以然後調用JavaScript調用的函數。再見Javacript!我從中得知,有時它不會爲遺留代碼工作。通過這種方式,改變事情以使其適合流程的ASP .Net模型最終變得更好。謝謝大家的回覆,帖子,幫助。