2010-01-12 105 views
3

我有一個ASP.NET網頁,其中包含一個複選框和一個按鈕表。我需要找到點擊按鈕時檢查的所有複選框的ID。一旦收集了ID列表,它就需要傳遞給服務器。我可以使用jQuery和PageMethods來完成它。ASP.NET - 在按鈕單擊時將參數傳遞給服務器

如何在代碼隱藏文件中的按鈕點擊處理程序中實現此目的?即發生按鈕點擊時檢查的所有複選框的ID。

我想在後面的代碼中執行它,因爲代碼背後的代碼包含幾個函數,這些函數創建圖表並將其導出爲PDF,並根據選中的複選框創建圖表。

請建議。

歡呼

回答

2

到可以,如果你不使用服務器控件爲您複選框或複選框已經在運行時動態添加通過發送Form集合迭代使用以前的答案,另一種作爲回帖的一部分。如果一個複選框已被選中,它將被添加到該集合中,其ID爲其鍵和值「on」。如果未檢查,則不會將其添加到集合中。要使用此方法,您需要確保某種命名約定,以允許您識別您之後的複選框ID:

foreach (var key in Request.Form.AllKeys) 
    { 
     if (key.EndsWith("checkbox", true, null)) 
     { 
      // If entry found then this checkbox has been checked 
     } 
    } 
3

如果您的複選框是服務器控件,然後再纔剛剛通過複選框列表項迭代,發現它們在你的按鈕的Click事件檢查。

如果您的複選框是html控件,然後使用將值放入一個隱藏的html輸入控件使用javascript,然後訪問此按鈕點擊事件中的值。

+0

Pulse也說明了如何做到這一點! – 2010-01-12 06:52:40

1

首先,我建議您重新考慮爲什麼要嘗試發現在客戶端選擇哪個複選框,並將其作爲參數傳遞給表單文章。爲什麼不直接在按鈕的onclick事件中枚舉它們?第二,假設有一些最終要求這樣做,我建議你使用jquery來發現所有選中的框並將它們的ID存儲在隱藏表單字段中的分隔字符串中。我不確定爲什麼您不得不將這些信息作爲按鈕點擊事件本身的直接參數傳遞,但不建議這樣做。

編輯:一個ASP.NET按鈕控件有一個CommandArgument屬性可以用來存儲它,但它不會出現,這是可以從客戶端設置的。

1

由於您已經收集了所有使用jQuery的id,最好將所有id推入數組,然後使用連接運算符(如';')連接數組。將此連接值保存到runat="server"屬性集中的隱藏文本字段<input type='hidden' id='txtHidIds' />。然後從C#使用

txtHidIds.Value 

得到這個隱藏字段的值,然後使用所使用的連接運算符進行分割。您可以在數組中獲得結果,然後操作包含所有ID的數組。

喜歡的東西

$("#btn1").click(function() { 
    var arrChecked = new Array(); 

    $("input[type='checkbox'].childCheck:checked").each(function() { 
     arrChecked.push($(this).attr("id")); 
    }); 

    $("#txtHidIds").val(arrChecked.join(';')); 
}); 
相關問題