Kullanıcılar bir CheckBoxList en az bir onay kutusunu seçti doğrulamak için?

oy
33

Onların her birini kontrol eğer fark etmez, en azından BİR kutuyu kullanıcı gerektiren istediğiniz bir CheckBoxList kontrolü var, ya da 3, hatta sadece bir ettik.

ASP.NET en doğrulama kontrollerinin ruhu içinde, bunu bu zorlamak ne kullanabiliriz? Ayrıca Ajax doğrulama extender kullanıyorum, bu yüzden diğer denetimleri gibi bakmak ve codebehind değil bazı sevimsiz sunucu Doğrulama yöntemi eğer iyi olurdu.

<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>
Oluştur 18/07/2009 saat 01:09
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
0

ckBoxListReasons öğelerin her döngü. Her öğe türündeki 'öğesini' olacaktır.

ListItem bir boolean olduğunu 'Seçilenler' adlı bir özellik olacaktır. Bu öğe seçildiğinde Bu doğru. Gibi bir şey:

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

bolSelectionMade kullanıcı en az bir seçim yapmış true olarak ayarlanır. Daha sonra istediğiniz herhangi bir doğrulayıcı kontrolünün Geçerli durumunu ayarlamak için kullanabilirsiniz.

Bu yardımcı olur umarım!

Richard.

Cevap 18/07/2009 saat 02:17
kaynak kullanıcı

oy
59

Bu doğrulama sunucu tarafı yapmak kolaydır, ama ben bunu istemci tarafında yapmak istiyorum varsayarak ben?

JQuery sürece tüm onay kutusu kontrolleri, sınıf olarak bir seçici olarak kullanmak ortak (NET kumanda üzerindeki CssClass) bir şey var olarak çok kolay bir şekilde yapabilirsiniz. Basit yapabilirsiniz JQuery işlevini ve bir ASP.NET özel doğrulama bağlanın. Emin olmak için özel doğrulayıcı rota gitmek yaparsanız çalışmıyor JavaScript örneğinde olduğu gibi buna da sunucu tarafını kontrol Hatırla, diğer .NET doğrulayıcıları gibi ücretsiz sunucu tarafı onay alamadım.

Özel doğrulayıcıları hakkında daha fazla bilgi için aşağıdaki bağlantılara göz atın: www.asp.net ve MSDN

Kullanılacak gerekmez JQuery sadece daha kolay kontrol yineleme ve tüm onay kutusunu bakmak için JavaScript fonksiyonunu yapar ama sadece isterseniz javascript vanilya kullanabilirsiniz.

: İşte bulunan bir örnektir orijinaline Bağlantı

<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;
}

Yan Not: JQuery sadece biraz js dosyası sayfanıza eklemeniz gerekir sayılabilir. Eğer dahil sahip olduktan sonra tüm kullanabilirsiniz JQuery sizin gibi. Hiçbir şey yüklemek ve tam bence Visual Studio sonraki sürümünde desteklenecektir.

Cevap 18/07/2009 saat 02:33
kaynak kullanıcı

oy
3

Rolla itibaren 4 Guys bu makaleye göz atın:

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

Onlar nasıl tam diğer NET denetimleri için RequiredFieldValidator gibi çalışır CheckBox ve CheckBoxList denetimleri için bir doğrulayıcı oluşturmak göstereceğiz. Bu sunucu tarafı doğrulama ve istemci tarafı doğrulama vardır. Bu konuda güzel bir parçası, bir ValidationGroup belirtebilirsiniz ve ValidationSummary kumanda ile çalışacak olan.

kaynağını indirip projenizde kullanmak için makalenin altındaki bir bağlantı vardır. Sadece dll başvurmak ve kontrolleri kayıt ve gitmek iyidir.

Cevap 18/07/2009 saat 03:22
kaynak kullanıcı

oy
13

İşte temizleyici jQuery biri verir uygulama ClientValidationFunction herhangi bir sayı için CheckBoxList bir sayfada kontroller:

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;
        }
    });
}

İşte biçimlendirme var:

<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." />

Ve son olarak, istemci işlevi kimliğine göre hedef kontrolünü almasına olanak veren özel doğrulayıcı:

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);
    }
}
Cevap 25/10/2010 saat 15:59
kaynak kullanıcı

oy
1

İşte yoluyla kabul edilebilir başka çözüm Dado.Validators GitHub'dan.

<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" />

Örnek codebehind.aspx.cs

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

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

Ref: Bir onay kutusu clientside onay kutularından oluşan bir grup işaretli olup olmadığını kontrol edin

Cevap 16/08/2013 saat 16:20
kaynak kullanıcı

oy
0

Bir kullanabilirsiniz CustomValidatorjavascript birazcık bunun için.

<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>

Ve bir 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>
Cevap 31/03/2017 saat 12:55
kaynak kullanıcı

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