PDA

View Full Version : سوال: دسترسی به ستون های DataGridView که در زمان اجرا درست شده اند؟



Open-Source
سه شنبه 03 شهریور 1388, 17:07 عصر
سلام.
سرچ کردم چیزی گیرم نیومد:ناراحت:

من اینطوری دیتا گرید رو پر میکنم:




OleDbConnection con = new OleDbConnection(setting.strConnection);
con.Open();

OleDbCommand oc = new OleDbCommand();
oc.CommandText = comText;
oc.Connection = con;

DataTable dt = new DataTable();

OleDbDataAdapter oda = new OleDbDataAdapter(oc);
oda.Fill(dt);

dgvAnbar.Columns.Clear();
dgvAnbar.DataSource = null;
dgvAnbar.DataSource = dt;
/////
dgvAnbar.Columns[0].HeaderText = "شماره فاکتور";
dgvAnbar.Columns[0].Width = 80;
dgvAnbar.Columns[1].HeaderText = "نام کالا";
dgvAnbar.Columns[1].Width = 100;
dgvAnbar.Columns[2].HeaderText = "تعداد کالا";
dgvAnbar.Columns[2].Width = 50;
dgvAnbar.Columns[3].HeaderText = "قیمت واحد";
dgvAnbar.Columns[3].Width = 100;
dgvAnbar.Columns[4].HeaderText = "قیمت کل";
dgvAnbar.Columns[4].Width = 100;
dgvAnbar.Columns[5].HeaderText = "قیمت فروش";
dgvAnbar.Columns[5].Width = 100;

////btn Delete & Edit
btnEdit = new DataGridViewButtonColumn();
btnEdit.HeaderText = "ویرایش";
btnEdit.Text = "ویرایش";
btnEdit.UseColumnTextForButtonValue = true;
btnEdit.Width = 80;
btnEdit.DefaultCellStyle.Font = new Font("Tahoma", 8);
dgvAnbar.Columns.Add(btnEdit);

btnDel = new DataGridViewButtonColumn();
btnDel.HeaderText = "حذف";
btnDel.Text = "حذف";
btnDel.UseColumnTextForButtonValue = true;
btnDel.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgvAnbar.Columns.Add(btnDel);

con.Close();




اگه دقت کنید من دوتا Button به گرید اضافه میکنم.
که نمیدونم شماره اندیسشون چند هستش (باید 6و7 باشند ولی نیستند).

اون دو تا Button که اضافه کردم توی گرید دارای اندیس 0 و 1 هستند.

و برای دسترسی به مقدار خانه شماره فاکتور این کار را میکنم:



string s1 = dgvAnbar.CurrentRow.Cells[2].Value.ToString()


این کد اولین بار درست عمل میکنه و مقدار خانه شماره فاکتور رو میده.

ولی وقتی یه تراکنش مثل فیلتر کردن یا حذف از گرید و دیتابیس رو انجام میدم.
وقتی دوباره با اون کد بالا گرید رو پر میکنم و میخوام به شماره فاکتور دسترسی پیدا کنم...

اندیس بهم خورده و دیگه 2 نیست.مثلا 4 شده.
:متعجب::متعجب:

نمیدونم مشکل از چیه.

آیا راهی به غیر از این برای دسترسی به ستون شماره فاکتور هست؟:ناراحت:

Mohsen229266
سه شنبه 03 شهریور 1388, 22:11 عصر
سلام دوست عزیز بجای ایندکس نام ستون رو بزار ببین درست میشه مثلا


string s1 = dgvAnbar.CurrentRow.Cells["id"].Value.ToString()

Open-Source
چهارشنبه 04 شهریور 1388, 12:16 عصر
خیلی ممنونم.
از نام استفاده کردم کارم راه افتاد.




dgvAnbar.Columns[0].HeaderText = "شماره فاکتور";
dgvAnbar.Columns[0].Width = 80;
dgvAnbar.Columns[0].Name = "FN";

بعد

string s1 = dgvAnbar.CurrentRow.Cells["FN"].Value.ToString();