1
我問過自己是否有一種簡單的方法來檢查列表框是否最多包含5個選定項目。必須至少選擇一個和最多5個項目。「選定項目的最大數量」 - 列表框的驗證器
我需要一個CustomValidator進行服務器端驗證嗎?
非常感謝提前...
我問過自己是否有一種簡單的方法來檢查列表框是否最多包含5個選定項目。必須至少選擇一個和最多5個項目。「選定項目的最大數量」 - 列表框的驗證器
我需要一個CustomValidator進行服務器端驗證嗎?
非常感謝提前...
您可以使用CustomValidator例程。
<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server"
OnServerValidate="ListBox5ItemsValidator_ServerValidate"
ClientValidationFunction="ListBox5ItemsValidator_ClientValidate"
ControlToValidate="MyListBox">
</asp:CustomValidator>
服務器端代碼:
protected void ListBox5ItemsValidator_ServerValidate(
object source, ServerValidateEventArgs args) {
int selectionCount = 0;
foreach (ListItem item in MyListBox.Items) {
if (item.Selected) selectionCount++;
}
args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
}
客戶端代碼:
function ListBox5ItemsValidator_ClientValidate(sender, args) {
var selectionCount = $('#<% =MyListBox.ClientID %> option:selected').length;
args.IsValid = (selectionCount >= 1 && selectionCount <= 5);
};
與要驗證你的ListBox的實際名稱替換MyListBox。如果您的ListBox包含在其他容器控件的內部,則可能需要更多的工作來引用服務器和客戶端上的控件。舉例來說,如果它被包含在所謂FormView1 FormView控件,你可以使用
ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox");
我試圖實現的CustomValidator服務器事件,但我得到'消息:Sys.ArgumentException:值不能爲空控制和行爲。參數名稱:element'。我認爲這與Ajax-ValidationCalloutExtender有關。 – 2010-11-15 17:46:59
我發現了一些關於此問題的內容,似乎是ValidationCalloutExtender和EnableClientScript =「false」的問題。 http://ajaxcontroltoolkit.codeplex.com/workitem/17713?ProjectName=ajaxcontroltoolkit – 2010-11-15 17:55:35
這個頁面更好的描述了這個問題,並提供了一個解決方案(即使對於像我的customvalidator這樣不重要的東西): http://www.junnark。 com/Articles/Article0001.aspx 如果你可以用jQuery提供ClientValidationFunction,我會將這個問題標記爲回答。謝謝。 – 2010-11-15 18:09:55