PDA

View Full Version : سوال: بدست آوردن row آپدیت شده



boysfe5
دوشنبه 11 دی 1391, 17:38 عصر
با سلام میخوام row آپدیت شده را بدست بیاورم.
وقتی که در دیتاگرید ویو بر روی row کلیک می کنم اطلاعات همان Row را در صفحه ای بنام Update نشان میده و وقتی که بروز رسانی کردم همان صفحه ای دیتاگرید نمایش داده میشه، میخوام وقتی که آپدیت انجام شد همان row آپدیت شده انتخاب بشه.

مهرداد صفا
دوشنبه 11 دی 1391, 18:01 عصر
سلام
با فرض اینکه میدانیم دهمین ردیف آپدیت شده با این کد به ردیف دهم میرویم:

dataGridView1.CurrentCell = dataGridView1[0, 9];

boysfe5
دوشنبه 11 دی 1391, 19:04 عصر
نمی خوام خودم row را بهش بدم ، وقتی Row را انتخاب کردم مثلا میخوام آپدیت کنم یک صفحه جدا براش باز میشه که اطلاعات را درون همان صفحه نشان میده و آپدیت را انجام میدم وقتی آپدیت انجام دادم برگرده و دیتاگرید مشخص بشه که کدام آپدیت شد. میخوام خودش Row آپدیت شده را مشخص کند
آیا میشه با استفاده از RowStatesChanged همچین کاری کرد؟

plus
دوشنبه 11 دی 1391, 19:16 عصر
نمی خوام خودم row را بهش بدم ، وقتی Row را انتخاب کردم مثلا میخوام آپدیت کنم یک صفحه جدا براش باز میشه که اطلاعات را درون همان صفحه نشان میده و آپدیت را انجام میدم وقتی آپدیت انجام دادم برگرده و دیتاگرید مشخص بشه که کدام آپدیت شد. میخوام خودش Row آپدیت شده را مشخص کند
آیا میشه با استفاده از RowStatesChanged همچین کاری کرد؟

بعد از Update شدن اون Row، دوباره به DataGridView دیتا میدین؟

boysfe5
دوشنبه 11 دی 1391, 20:03 عصر
97611میخوام با انتخاب Rowهمانطور که در عکس مشخصه کد و گروه را بدست می آورم بعد از کلیک بروز رسانی همان صفحه مخفی می شود و میخوامCurrentRow همانی که تغییر دادم انتخاب بشه.
چطور می توانم CurrentRow ویرایش داده شده را مشخص کنم؟

plus
دوشنبه 11 دی 1391, 20:32 عصر
خوب شما نگفتین که بعد از بروز رسانی (بسته شدن فرم ویرایش) آیا دوباره به DataGridView داده میدین یا نه. اگه نمیدین که سطری که کاربر انتخاب کرده و دکمه ویرایش رو زده که عوض نمیشه، CurrentRow دیتاگریدویو همون قبلی میمونه مگه اینکه با کد عوضش کنید یا اینکه دوباره DataGridView رو پر کنید.

boysfe5
دوشنبه 11 دی 1391, 21:09 عصر
نه دیتا نمی دم.
با این کد وقتی که یک Row ایجاد می کنیم آخرین Row را بدست می آوریم

dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[0];
ولی وقع بروز رسانی Row ویرایش شده را نمی دونم چطوری میشه مشخص کرد.
لطفا راهنمایی کنید.

plus
دوشنبه 11 دی 1391, 21:14 عصر
پس چطوری CurrentRow عوض میشه که میخواین دوباره بدستش بیارین؟
به هر حال میتونید قبل از ویرایش Row رو ذخیره کنید و بعد دوباره پیدا کنید.



DataGridViewRow row = dataGridView1.CurrentRow;
// Edit..
//...
if (row != null)
dataGridView1.CurrentCell = dataGridView1.Rows[row.Index].Cells[0];

البته این در صورتی درسته که در ویرایش دوباره به گرید دیتا ندید.

boysfe5
دوشنبه 11 دی 1391, 21:43 عصر
اگه به گرید دیتا بدم اونوقت چطوری می تونم بدست بیارم؟

plus
دوشنبه 11 دی 1391, 21:52 عصر
اونوقت باید روی یک فیلد یکتا که در دیتاسورس گرید هست جستجو کنید و سطر رو پیدا کنید.مثلا فرض کنیم فیلدی به اسم آیدی داریم که در ستون های گرید موجوده...


int currentSelectedId = (int)dataGridView1.CurrentRow.Cells["Id"].Value;
// Edit
// dataGridView1.DataSource = ... ;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells["Id"].Value != null && row.Cells["Id"].Value.Equals(currentSelectedId))
{
dataGridView1.CurrentCell = row.Cells[0];
break;
}
}

boysfe5
دوشنبه 11 دی 1391, 22:14 عصر
میشه پروژه را بزارم بهش نگاه کنید تا حل بشه نتونستم. شرمنده

plus
دوشنبه 11 دی 1391, 22:16 عصر
من Sql کلا نصب ندارم رو سیستمم حالا بگذارین ببینم چطوری میشه.

boysfe5
دوشنبه 11 دی 1391, 22:36 عصر
با access هستش مرسی97625

plus
دوشنبه 11 دی 1391, 22:52 عصر
این رویداد رو اینطوری اصلاح کنید:

private void button2_Click(object sender, EventArgs e)
{
frmCategoryEdit catedit = new frmCategoryEdit();
int editingId = (int)this.dataGridView1[0, dataGridView1.CurrentRow.Index].Value;
catedit.textBox1.Text = this.dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();
catedit.textBox2.Text = this.dataGridView1[1, dataGridView1.CurrentRow.Index].Value.ToString();
catedit.ShowDialog();
frmCategoryList_Load(sender, e);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value != null && row.Cells[0].Value.Equals(editingId))
{
dataGridView1.CurrentCell = row.Cells[0];
break;
}
}

}

boysfe5
دوشنبه 11 دی 1391, 23:05 عصر
مرسی حل شد.