कैसे मान्य करने के लिए एक उपयोगकर्ता एक CheckBoxList में कम से कम एक चेकबॉक्स चुना?

वोट
33

मैं एक CheckBoxList नियंत्रण है कि मैं कम से कम एक बॉक्स की जांच की जरूरत पड़ती है करना चाहते हैं मिल गया है, यह कोई बात नहीं अगर वे हर एक की जाँच करें, या 3, या यहाँ तक कि सिर्फ एक।

asp.net के मान्यता नियंत्रण की भावना में, क्या मैं इस लागू करने के लिए उपयोग कर सकते हैं? मैं भी अजाक्स सत्यापन एक्सटेंडर उपयोग कर रहा हूँ, तो यह अच्छा होगा यदि यह अन्य नियंत्रण की तरह नहीं कुछ codebehind में घटिया सर्वर सत्यापित करें विधि लग सकता है, और होगा।

<asp:CheckBoxList RepeatDirection=Horizontal RepeatLayout=Table RepeatColumns=3 ID=ckBoxListReasons runat=server>
    <asp:ListItem Text=Preliminary Construction Value=prelim_construction />
    <asp:ListItem Text=Final Construction Value=final_construction />
    <asp:ListItem Text=Construction Alteration Value=construction_alteration />
    <asp:ListItem Text=Remodel Value=remodel />
    <asp:ListItem Text=Color Value=color />
    <asp:ListItem Text=Brick Value=brick />
    <asp:ListItem Text=Exterior Lighting Value=exterior_lighting />
    <asp:ListItem Text=Deck/Patio/Flatwork Value=deck_patio_flatwork />
    <asp:ListItem Text=Fence/Screening Value=fence_screening />
    <asp:ListItem Text=Landscape - Front Value=landscape_front />
    <asp:ListItem Text=Landscape - Side/Rear Value=landscape_side_rear />
    <asp:ListItem Text=Other Value=other />
</asp:CheckBoxList>
18/07/2009 को 01:09
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
0

ckBoxListReasons में वस्तुओं में से प्रत्येक के माध्यम से लूप। प्रत्येक आइटम प्रकार के 'ListItem' होगा।

ListItem एक संपत्ति बुलाया बूलियन नहीं है कि की चुनी गई 'होगा। यह सच है जब कि आइटम का चयन किया है। कुछ इस तरह:

Dim bolSelectionMade As Boolean = False
For Each item As ListItem in ckBoxListReasons.Items
 If item.Selected = True Then
  bolSelectionMade = True
 End If
Next

bolSelectionMade सही पर सेट किया जाएगा यदि उपयोगकर्ता कम से कम एक चयन बना दिया है। इसके बाद आप उपयोग कर सकते हैं कि किसी विशेष सत्यापनकर्ता नियंत्रण आप की तरह की मान्य राज्य स्थापित करने के लिए।

उम्मीद है की यह मदद करेगा!

रिचर्ड।

18/07/2009 को 02:17
का स्रोत उपयोगकर्ता

वोट
59

यह इस मान्यता सर्वर साइड ऐसा करना आसान है, लेकिन मैं आपको यह ग्राहक के पक्ष में करना चाहते हैं यह सोचते हैं रहा हूँ?

JQuery यह बहुत ही आसानी से जब तक आप कुछ है कि इस तरह के वर्ग के रूप में आम में है सब चेकबॉक्स नियंत्रण (अपने नेट नियंत्रण पर CssClass) एक चयनकर्ता के रूप में उपयोग करने के लिए है के रूप में कर सकते हैं। आप एक सरल बना सकते हैं JQuery समारोह है और यह एक ASP.NET कस्टम सत्यापनकर्ता से कनेक्ट। याद रखें अगर आप सुनिश्चित करने के लिए कस्टम सत्यापनकर्ता मार्ग जाना कर आप इसे सर्वर साइड रूप में अच्छी तरह जाँच मामले जावास्क्रिप्ट काम नहीं कर रहा है, तो आप अन्य नेट प्रमाणकों की तरह एक मुक्त सर्वर साइड की जांच नहीं मिलता है।

कस्टम प्रमाणकों पर अधिक जानकारी के लिए निम्न लिंक की जाँच: www.asp.net और MSDN

आप का उपयोग करने की जरूरत नहीं JQuery , यह सिर्फ पुनरावृति और अपने सभी चेकबॉक्स को देखने के लिए जावास्क्रिप्ट समारोह बहुत आसान बना देता नियंत्रित करता है लेकिन आप केवल वेनिला यदि आप चाहें जावास्क्रिप्ट का उपयोग कर सकते हैं।

: यहाँ एक उदाहरण मैं पर पाया है मूल से लिंक करें

<asp:CheckBoxList ID="chkModuleList"runat="server" >
</asp:CheckBoxList>

<asp:CustomValidator runat="server" ID="cvmodulelist"
  ClientValidationFunction="ValidateModuleList"
  ErrorMessage="Please Select Atleast one Module" ></asp:CustomValidator>

// javascript to add to your aspx page
function ValidateModuleList(source, args)
{
  var chkListModules= document.getElementById ('<%= chkModuleList.ClientID %>');
  var chkListinputs = chkListModules.getElementsByTagName("input");
  for (var i=0;i<chkListinputs .length;i++)
  {
    if (chkListinputs [i].checked)
    {
      args.IsValid = true;
      return;
    }
  }
  args.IsValid = false;
}

साइड नोट: JQuery है बस थोड़ी js फ़ाइल आप अपने पेज में जोड़ने की जरूरत है शामिल हैं। एक बार जब आप यह शामिल है कि आप सभी का उपयोग कर सकते JQuery आप की तरह। कुछ भी नहीं है स्थापित करने के लिए है और यह पूर्ण मुझे लगता है कि दृश्य स्टूडियो के अगले संस्करण में समर्थन किया जाएगा।

18/07/2009 को 02:33
का स्रोत उपयोगकर्ता

वोट
3

रोल्ला से 4 दोस्तों से इस लेख को देखें:

http://aspnet.4guysfromrolla.com/articles/092006-1.aspx

वे बताएंगे कि कैसे चेकबॉक्स चुनकर CheckBoxList नियंत्रण होता है जो वास्तव में अन्य नेट नियंत्रण के लिए RequiredFieldValidator तरह काम करता है के लिए एक सत्यापनकर्ता बनाने के लिए। यह सर्वर साइड सत्यापन और ग्राहक साइड सत्यापन है। उस के बारे में अच्छा हिस्सा आप एक ValidationGroup निर्दिष्ट कर सकते हैं और यह ValidationSummary नियंत्रण के साथ काम करेंगे है।

वहाँ भी स्रोत डाउनलोड करने और अपने परियोजना में इसका इस्तेमाल करने के लेख के नीचे एक कड़ी है। तुम बस dll का संदर्भ और नियंत्रण रजिस्टर और तुम जाना अच्छा कर रहे हैं।

18/07/2009 को 03:22
का स्रोत उपयोगकर्ता

वोट
13

यहाँ एक क्लीनर है jQuery कार्यान्वयन है कि एक की अनुमति देता है ClientValidationFunction के किसी भी संख्या के लिए CheckBoxList एक पृष्ठ पर नियंत्रण:

function ValidateCheckBoxList(sender, args) {
    args.IsValid = false;

    $("#" + sender.id).parent().find("table[id$="+sender.ControlId+"]").find(":checkbox").each(function () {
        if ($(this).attr("checked")) {
        args.IsValid = true;
        return;
        }
    });
}

यहाँ मार्कअप है:

<asp:CheckBoxList runat="server"
          Id="cblOptions" 
          DataTextField="Text" 
          DataValueField="Id" />

<xx:CustomValidator Display="Dynamic" 
              runat="server" 
              ID="cblOptionsValidator"
              ControlId="cblOptions"
              ClientValidationFunction="ValidateCheckBoxList" 
              ErrorMessage="One selection required." />

और अंत में, ग्राहक समारोह आईडी के आधार पर लक्ष्य नियंत्रण पुनः प्राप्त करने की अनुमति देता है कि कस्टम सत्यापनकर्ता:

public class CustomValidator : System.Web.UI.WebControls.CustomValidator
{
    public string ControlId { get; set; }

    protected override void OnLoad(EventArgs e)
    {
        if (Enabled)
            Page.ClientScript.RegisterExpandoAttribute(ClientID, "ControlId", ControlId);

        base.OnLoad(e);
    }
}
25/10/2010 को 15:59
का स्रोत उपयोगकर्ता

वोट
1

यहाँ एक और समाधान के माध्यम से विचार किया जा सकता है कि है Dado.Validators GitHub पर।

<asp:CheckBoxList ID="cblCheckBoxList" runat="server">
    <asp:ListItem Text="Check Box (empty)" Value="" />
    <asp:ListItem Text="Check Box 1" Value="1" />
    <asp:ListItem Text="Check Box 2" Value="2" />
    <asp:ListItem Text="Check Box 3" Value="3" />
</asp:CheckBoxList>

<Dado:RequiredFieldValidator runat="server" ControlToValidate="cblCheckBoxList" ValidationGroup="vlgSubmit" />

उदाहरण codebehind.aspx.cs

btnSubmit.Click += (a, b) =>
{
    Page.Validate("vlgSubmit");
    if (Page.IsValid) {
        // Validation Successful
    }
};

https://www.nuget.org/packages/Dado.Validators/

रेफरी: जाँच करें कि एक चेकबॉक्स clientside में चेक बॉक्स के एक समूह में चेक किया गया है

16/08/2013 को 16:20
का स्रोत उपयोगकर्ता

वोट
0

आप एक का उपयोग कर सकते CustomValidatorजावास्क्रिप्ट का एक छोटा सा के साथ उस के लिए।

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Select at least one"
    ClientValidationFunction="checkCheckBoxList"></asp:CustomValidator>

<script type="text/javascript">
    function checkCheckBoxList(oSrc, args) {
        var isValid = false;
        $("#<%= CheckBoxList1.ClientID %> input[type='checkbox']:checked").each(function (i, obj) {
            isValid = true;
        });
        args.IsValid = isValid;
    }
</script>

और के लिए एक RadioButtonList

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Select at least one" ClientValidationFunction="checkRadioButtonList"></asp:CustomValidator>

<script type="text/javascript">
    function checkRadioButtonList(oSrc, args) {
        if ($("input[name='<%= RadioButtonList1.UniqueID %>']:checked").val() == null) {
            args.IsValid = false;
        } else {
            args.IsValid = true;
        }
    }
</script>
31/03/2017 को 12:55
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more