none
Sınırlı sayıda kayıt ekleme RRS feed

  • Soru

  • Her keze merhabalar;

    Hemen soruma geçmek istiyorum. etkinliğe sporcu ekleme yapmak istediğinde kategoriye en fazla kulüplerin 4 sporcu eklemesini istiyorum 5incisini eklediğinde kategoriye aynı kulüp ten 4 kişiden fazla yükleyemezsiniz mesajı vermek istiyorum.

    verileri  GridView ile çekiyorum. sporcu seçimleri ise CheckBoxile yapıyorum. Bu konuda yardımlarınızı bekliyorum.

    Teşekkürler.

    31 Mayıs 2018 Perşembe 00:21

Tüm Yanıtlar

  • CheckBox sınıfının CheckedChanged olayını kullanarak dörtten fazla CheckBox işaretli ise uyarı mesajı verip son işaretlenen CheckBox'ın Checked özelliğini false yapabilirsiniz...

            private void Form1_Load(object sender, EventArgs e)
            {
                Controls.OfType<CheckBox>().ToList().ForEach(cBox => cBox.CheckedChanged += checkBox1_CheckedChanged);
            }
    
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                int cbCount = Controls.OfType<CheckBox>().ToList().Where(cBox => cBox.Checked == true).Count();
                if (cbCount > 4)
                {
                    (sender as CheckBox).Checked = false;
                    MessageBox.Show("HATA: En fazla dört sporcu seçebilirsiniz.!.");
                }
            }
    


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    31 Mayıs 2018 Perşembe 04:56
  • Merhaba Murat'bey

    Resimdeki durum benim özetim ilk yazdığım biraz anlamsız oldu.


    31 Mayıs 2018 Perşembe 12:02
  • Veritabanında Kategori'ye göre unique index yaparsan aynı kayıttan iki tane yapma olasılığın ortadan kalkar.
    31 Mayıs 2018 Perşembe 20:19
  • Merhaba ilhan

    yalnız bu 2 ile sınırlı olmayacak admin panelinden değiştire bileceğim misal yarın bir gün 4 kişiye sınırlaya bilirim.

    bu konuda daha detaylı bilgi veren arkadaşlar olursa çok sevinirim. Teşekkürler

    31 Mayıs 2018 Perşembe 22:24
  • Şöyle yapabilirsin:
    CheckBox'ları for ile döndür ve san zaten true veya false döndürecek
    int tplmsy=4; int dgr=0;
    if(CheckBox==
    tplmsy)
    {dgr +=1 }
    else{
    //uyarı mesajı
    }


    Bu şekil bir kod yazabilir istediğin bir sayı sonrasını uyarı verdirebilirsin.İstersen yukardaki değişkene veritabanından istediğin sayıyı getirerek kontrol edebilirsin.
    1 Haziran 2018 Cuma 01:42
  •         private void button1_Click(object sender, EventArgs e)
            {
                bool isChecked;
                string key;
                int limit = 1;
                List<DataGridViewRow> checkedRows = new List<DataGridViewRow>();
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    isChecked = Convert.ToBoolean(row.Cells["CheckBoxKolonAdi"].Value) == true;
                    key = Convert.ToString(row.Cells["KategoriKolonAdi"].Value);
                    if (isChecked)
                    {
                        if (checkedRows.Where(r => Convert.ToString(r.Cells["KategoriKolonAdi"].Value) == key).Count() < limit)
                            checkedRows.Add(row);
                        else
                            MessageBox.Show($"HATA: {key} kategorisinde {limit} sporcudan fazla seçim yaptınız.!.");
                    }
                }
                // Burada checkedRows listesini kullanarak kayıt işlemlerini yapabilirsiniz.!.
            }
    


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    1 Haziran 2018 Cuma 05:26
  • Cevaplar için teşekkürler yalnız ben asp.net kullanıyorum

    Kodum ise şu şekilde

            protected void Button1_Click(object sender, EventArgs e)
            {
    
                foreach (GridViewRow row in gweSporcular.Rows)
                {
    
                    DataRow drKul = klas.GetDataRow("Select * From Etkinlik");
                    DropDownList ddlKategori = (row.FindControl("ddlKategori") as DropDownList);
                    DropDownList ddlKategoriYas = (row.FindControl("ddlKategoriYas") as DropDownList);
                    CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
                    string name = row.Cells[0].Text;
                    string id = row.Cells[1].Text;
                    string address = row.Cells[2].Text;
                    string KlubID = row.Cells[5].Text;
                    string EtkinlikID = row.Cells[6].Text;
    
    
                        bool durum;
                        if (chkSelect.Checked)
                            durum = true;
                        else
                            durum = false;
    
                        SqlConnection baglanti = klas.baglan();
                        SqlCommand cmd1 = new SqlCommand("Update Etkinlikler  SET  KategoriID=@KategoriID,KategoriKiloID=@KategoriKiloID,Secili=@Secili Where SporcuID=" + id, baglanti);
    
                        cmd1.Parameters.AddWithValue("KategoriID", ddlKategori.SelectedValue);
                        cmd1.Parameters.AddWithValue("KategoriKiloID", ddlKategoriYas.SelectedValue);
                        cmd1.Parameters.AddWithValue("Secili", durum);
                        cmd1.ExecuteNonQuery();
    
                  
                }
            }

    2 Haziran 2018 Cumartesi 20:24
  •         private void button1_Click(object sender, EventArgs e)
            {
                bool isChecked;
                string key;
                int limit = 1;
                List<GridViewRow> checkedRows = new List<GridViewRow>();
                foreach (GridViewRow row in dataGridView1.Rows)
                {
                    key = (row.FindControl("ddlKategori") as DropDownList).SelectedValue.ToString();
                    isChecked = (CheckBox)row.FindControl("chkSelect").Checked;
                    if (isChecked)
                    {
                        if (checkedRows.Where(r => Convert.ToString(r.Cells["KategoriKolonAdi"].Value) == key).Count() < limit)
                            checkedRows.Add(row);
                        else
                            MessageBox.Show($"HATA: {key} kategorisinde {limit} sporcudan fazla seçim yaptınız.!.");
                    }
                }
                SqlConnection baglanti = klas.baglan();
                foreach (GridViewRow row in checkedRows)
                {
                    key = row.Cells[1].Text;
                    using (SqlCommand cmd1 = new SqlCommand("Update Etkinlikler  SET  KategoriID=@KategoriID,KategoriKiloID=@KategoriKiloID,Secili=1 Where SporcuID=@id", baglanti))
                    {
                        cmd1.Parameters.AddWithValue("@KategoriID", (row.FindControl("ddlKategori") as DropDownList).SelectedValue.ToString());
                        cmd1.Parameters.AddWithValue("@KategoriKiloID", (row.FindControl("ddlKategoriYas") as DropDownList).SelectedValue.ToString());
                        cmd1.Parameters.AddWithValue("@id", key);
                        baglanti.Open();
                        cmd1.ExecuteNonQuery();
                    }
                }
            }
    
    


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    4 Haziran 2018 Pazartesi 12:43