PDA

View Full Version : شمارش سطرهای چک خورده datagrid



012132
چهارشنبه 25 تیر 1393, 23:22 عصر
من توی دیتاگرید ویو یه سری اطلاعات دارم ، یه ستون از نوع checkbox بهش اضافه کردم برای اینکه کاربر بتونه سطرهایی که میخواد رو انتخاب کنه .
من می خوام که روی این رویه کد بنویسم . مثلاً هر سطری که تیک خورد یه دونه به مقدار i اضافه شه و اگه تیک برداشته شد از i یه دونه کم شه .
این کدها رو توی کدوم قسمت از دیتاگرید باید بنویسم ؟

mz6488
چهارشنبه 25 تیر 1393, 23:53 عصر
سلام.فکر کنم ایونت cell_endEdit باشه

khokhan
پنج شنبه 26 تیر 1393, 00:06 صبح
من توی دیتاگرید ویو یه سری اطلاعات دارم ، یه ستون از نوع checkbox بهش اضافه کردم برای اینکه کاربر بتونه سطرهایی که میخواد رو انتخاب کنه .
من می خوام که روی این رویه کد بنویسم . مثلاً هر سطری که تیک خورد یه دونه به مقدار i اضافه شه و اگه تیک برداشته شد از i یه دونه کم شه .
این کدها رو توی کدوم قسمت از دیتاگرید باید بنویسم ؟
یه حلقه با شرط اینکه ستون چک باکس چک شده باشه و شمارش سطر ها



for (i = 0; i <= dataGridView1.RowCount - 1; i++){
if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["chkcol"].Value) == true)
{
++count;
}
textBox1.Text = count.ToString();
}

ویا اینکه :

اندیس سطر های چک شده رو بریز توی یه لیست ، بعد آیتمهای لیست رو بشمار :لبخند:

012132
پنج شنبه 26 تیر 1393, 21:31 عصر
دوست عزیز این کار زیاد برام کاربردی نیست . چون اولاً حتماً بعد از تیک زدن یا برداشتن ، حتماً باید روی یک ردیف دیگه از دیتاگرید کلیک کنیم تا مقدار ثبت بشه ، بعدشم اگه از قبل تیک خورده باشه و یک بار تیکو برداریم و دوباره بزنیم ، به مقدار هی اضافه میشه . سوماً می خوام کاربر نتونه بیش از 5 ردیف رو تیک بزنه ، تیک زدن هم آنی باشه ، مثل checkbox های معمولی ، به حض اینکه روش کلیک شد ، تیک زده بشه و اگه شرطی وجود داشت ، در همون لحظه نشون بده
این روشی که شما اشاره کردید ، برای من اصلاً کاربردی نیست .

یونس ابراهیمی
دوشنبه 30 تیر 1393, 18:46 عصر
اینم جواب سوال شما



using System;
using System.Windows.Forms;

namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private int getCheckRows(){
int result = 0;

for (int rowCounter = this.dataGridView1.Rows.Count -1; rowCounter >=0; rowCounter--)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[rowCounter].Cells[1].Value) == true)
{
result++;
}
}
return result;
}

private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.Rows.Add("Siavash", true);
this.dataGridView1.Rows.Add("Soroush", false);
this.dataGridView1.Rows.Add("Amin", false);
this.dataGridView1.Rows.Add("siavash", true);
this.dataGridView1.Rows.Add("Siavash", true);
this.dataGridView1.Rows.Add("Soroush", false);
this.dataGridView1.Rows.Add("Amin", false);
this.dataGridView1.Rows.Add("siavash", true);

this.label1.Text = getCheckRows().ToString();
}

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
int count = this.getCheckRows();
if (count > 4 && Convert.ToBoolean(this.dataGridView1.CurrentCell.V alue) == false)
{
e.Cancel = true;
}
}

private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dataGridView1.IsCurrentCellDirty)
{
this.dataGridView1.CommitEdit(DataGridViewDataErro rContexts.Commit);
}
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
int countRowChecked = getCheckRows();
this.label1.Text = countRowChecked.ToString();
}
}
}



منبع :www.w3-farsi.com