我在C#中爲3.5開發了一個ASP.Net Server自定義控件。命名爲「myCheckBoxList」,它繼承自CheckBoxList的Web控件。多個Custome控件無法正常工作
工作很簡單。它只是作爲一個兩選項複選框按鈕。我採取了一個CheckBoxList,總是會顯示兩個複選框。工作是這樣的,當一個複選框被選中時,另一個應該被取消選中,反之亦然。
只有當我在網頁上放置該控件的一個實例時,該控件才能完美工作。如果我放置多個控件的實例,那麼它不起作用。
我在C#中爲3.5開發了一個ASP.Net Server自定義控件。命名爲「myCheckBoxList」,它繼承自CheckBoxList的Web控件。多個Custome控件無法正常工作
工作很簡單。它只是作爲一個兩選項複選框按鈕。我採取了一個CheckBoxList,總是會顯示兩個複選框。工作是這樣的,當一個複選框被選中時,另一個應該被取消選中,反之亦然。
只有當我在網頁上放置該控件的一個實例時,該控件才能完美工作。如果我放置多個控件的實例,那麼它不起作用。
爲什麼不使用單選按鈕?您正在嘗試重新創建已存在的控件的功能。如果你喜歡,你可以將它們看起來像複選框,但大多數用戶知道單選按鈕的功能以及它們的行爲方式。
請嘗試以下操作。它會重新創建您在評論中描述的行爲。如果您需要爲多個組執行此操作,則需要爲每個組定義一個currentSelection變量,併爲每個組定義一個不同的類,但這可能是一個巧妙的方法。我會留給你去試驗。也許已經把它包裝在一個控件中,並且爲每個contriol生成var和document.ready函數。儘管只添加jquery-1.4.1.js引用。
<script type="text/javascript" src="/js/jquery-1.4.1.min.js"></script>
<script type="text/javascript" language="javascript">
var currentSelection;
$(document).ready(function() {
$(".radio").click(function() {
if (currentSelection == this.id) {
this.checked = false;
}
else {
currentSelection = this.id;
}
});
});
</script>
<asp:RadioButton id="rb" runat="server" />
<asp:RadioButton id="rb1" runat="server" />
代碼隱藏:
rb.InputAttributes.Add("class", "radio");
rb1.InputAttributes.Add("class", "radio");
非常感謝您的回覆。 丹尼爾,你是對的。但是一旦我們選擇了任何選項,我們就不能在單選按鈕中再次取消選中。對?我的意思是,如果我有兩個單選按鈕,最初都沒有取消選中,一旦我檢查(選擇)其中的任何一個,我不能再次取消選擇。我想要使用複選框可以獲得的功能。 – Kamlesh 2010-06-11 09:56:11
這仍然可以通過在單選按鈕的單擊事件上放置一個JavaScript來完成。如果已經點擊了單選按鈕,請設置checked = false;使用JQuery選擇器來標識單選按鈕,並將click事件掛接到該函數。它應該是大約5行的JQuery。一行,如果你不關心可讀性。 – 2010-06-11 10:14:09
謝謝丹尼爾給我你好的建議。這是與單選按鈕,但我嚴格要使用checkboxlist控件。毫無疑問,你的建議將對我有所幫助。再一次感謝你。 – Kamlesh 2010-06-11 13:26:29
它成爲我的案例之一。我正在努力在c#中爲3.5開發Web服務器客戶端控件。這個客戶控制由checkboxlist繼承。我只將一個JavaScript函數「ClickMe()」放了一次(這是很明顯的說法)。當我在網頁上放置多個控件時,在運行時,它會爲每個控件通過同名「ClickMe()」函數創建javascript函數。這是瓶頸。
最後,我決定爲每個控件分別編寫這個javascript函數,但是在運行時。爲此,我將這個ID與「ClickMe()」連接起來。 (像this this.ID +「ClickMe()」)。我得到了解決方案。
什麼「不工作」?你是否得到了一個特定的錯誤,是你的邏輯運作的一部分,等等。難以讓任何人在沒有指出問題的情況下給你一個答案。 – RPM1984 2010-06-11 09:05:54