Bu makalemizde Asp.Net tarafında sıkça kullandığımız Grid üzerindeki checkbox’ların seçili olup olmadığı durumlarını kontrol etmeyi göreceğiz.
Öncelikle asp.net nesnesi bir gridview yerleştiriyoruz sayfamıza ve checkbox’ların seçili olup olmadığını kontrol etmek içinde bir adet customvalidator nesnesi yerleştiriyoruz sayfamıza Errormessage ve ForeColor yani yazı renginide ayarladıktan sonra bir adet button koyuyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Eval("Id") %>' /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Ad" HeaderText="Ad" /> <asp:BoundField DataField="Ulke" HeaderText="Ülke" /> </Columns> </asp:GridView> <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Lütfen en az bir adet kayıt seçiniz." ClientValidationFunction="Dogrula" ForeColor="Red"></asp:CustomValidator> <br /> <asp:Button ID="Button1" runat="server" Text="Gönder" /> |
Şimdi ise sayfanın hazırlanmasında yani Page_Load metoduna gridview nesnesine verileri yüklemek için System.Data sınıfını namespace kısmına eklemeniz gerekmektedir.
1 | using System.Data; |
Page_Load olayında veri yükleme yaptığımız kod satırları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { var dt = new DataTable(); dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Ad"), new DataColumn("Ulke") }); dt.Rows.Add(1, "Murat ÖNER", "Türkiye"); dt.Rows.Add(2, "John Hammond", "Amerika"); dt.Rows.Add(3, "Mudassar Khan", "Hindistan"); dt.Rows.Add(4, "Suzanne Mathews", "Fransa"); dt.Rows.Add(5, "Robert Schidner", "Rusya"); GridView1.DataSource = dt; GridView1.DataBind(); } } |
Custom validator nesnesinde ClientValidationFunction property’sinde tanımladığımız Dogrula fonksiyonunu aşağıdaki gibi yazınız.
1 2 3 4 5 6 7 8 9 10 11 12 | <script type="text/javascript"> function Dogrula(sender, args) { var gridView = document.getElementById("<%=GridView1.ClientID %>"); var checkBoxes = gridView.getElementsByTagName("input"); for (var i = 0; i < checkBoxes.length; i++) { if (checkBoxes[i].type == "checkbox" && checkBoxes[i].checked) { args.IsValid = true; return; } } args.IsValid = false; } |
merhabalar ben hiç script bilmiyorum bu yüzden de ne olduğunu çozemedşim hangisini seçtiğimizi nasıl anlıyoruz? teşekkürler
Merhabalar,
Aslında işlem oldukça basit şöyleki makalenin sonlarında doğrula adlı bir javascript fonksiyonu var bu fonksiyon içerisinde ilk satırda chechbox’ların yer aldığı table’ı alıyoruz.
İkinci satırda table nesnesi içerisindeki tüm input nesnelerini alıyoruz ve bu aldığımız input nesnelerini for ile dönüyoruz for içerisinde her bir input nesnesinin türünün checkbox olup olmadığını eğer checkbox ise ikinci if koşulunda checked(yani seçili olduğunu) kontrol ediyoruz işlemimiz bu kadar.