PDA

View Full Version : فوکس اشاره گرد یتاگرید روی رکوردتازه درج شده



sm_ezadpanah
پنج شنبه 25 مرداد 1386, 10:28 صبح
با سلام
من در حال نوشتن یه برنامه هستم که توی اون یک باتن برای درج در بانک دارم . بدین صورت که وقتی کاربر بخاد یه رکورد جدید درج کنه اون اتن رو میزنه یه فرم دیگه showdialog میشه و تو اون فرم فیلدهایی رو که باید پر کنه میبینه . بعد از پرکردن فیلدها یه باتن ثبت هست که با زدن اون اطلاعات د ربانک درج میشه و اون فرم بسته میشه میاد داخل همون فرم اولی که اونجا یه دیتا گرید هست که رکوردهای اون جدول رو نمایش میده. من می خوام بعد از اینکه کاربر دکمه ثبت رو زد و فرم بسته شد اشاره گر دیتا گرید بیاد و روی همون رکوردی که تازه درج شده قرار بگیره .
از یه راهی استفاده کردم و اون اینه که میام بعد از ثبت id رکورد ثبت شده رو ور میدارم و تو فرم اولی به وسیله یک حلقه داخل دیتا ست میگردم و یکی یکی چک میکنم و به شمارنده یکی اضافه می کنم . عد که رکورد پیدا شد اشاره گر دیتاگرید رو ست میکنم ه اون شمارنده . جواب هم گرفتم . اما میدونم که این را بهینه نیست دنبال یه راه بهتر می گردم . که وقت کمتری بگیره .

PC2st
پنج شنبه 25 مرداد 1386, 11:08 صبح
اشاره گر دیتا گرید بیاد و روی همون رکوردی که تازه درج شده قرار بگیره .
اگر مشکلتون یافتن رکوردی است که کاربر تازه اضافش کرده، بستگی داره:
اگر رکوردی که کاربر اضافه میکنه، در بین دو رکورد دیگر قرار بگیره، قبل از نمایش دیالوگ برای گرفتن داده های کاربر، ابتدا ایندکس سطر فعلی رو در یک متغیر ذخیره کنید و بعد از اینکه کاربر روی دکمه ثبت کلیک کرد، رکورد جدید رو دقیقا بعد از سطری قرار دهید که ایندکس آنرا قبلا در یک متغیر دخیره کرده بودید و در آخر سر، آن رکورد رو فعال کنید، مثلا:
ابتدا بکمک کد زیر، ایندکس سطر فعلی رو نگهداری کنید:


int rowIndex = dataGridView1.CurrentRow.Index;

بعد از اینکه کاربر اطلاعات جدید رو ثبت کرد و به فرض اینکه dataGridView1 به دیتاست ds وصل شده باشد:


ds.Tables["your table"].Rows.InsertAt(userDataRow, rowIndex);
dataGridView1.CurrentCell = dataGridView1[0, rowIndex];

خط اول برای افزودن رکورد، که userDataRow همان داده های کاربر است.
خط دوم هم فوکوس رو به همان سطر منتقل میکنه.

sm_ezadpanah
پنج شنبه 25 مرداد 1386, 12:04 عصر
خط اول برای افزودن رکورد، که userDataRow همان داده های کاربر است.
منظورتون از این جمله چیه اگه منظورتون اینه که با این خط من رورد جدیدرو در گرید نمایش بدم که من اینکار رو هنگاو اکتیو شده فرم با گرفتن یک سلکت از جدول که حالا یگه اون رکورد جدید هم اضافه شده انجام میدم

PC2st
پنج شنبه 25 مرداد 1386, 12:16 عصر
اینکار رو هنگاو اکتیو شده فرم با گرفتن یک سلکت از جدول که حالا یگه اون رکورد جدید هم اضافه شده انجام میدم
نه منظورم این نیست، منظور من این بود که اون خط از دستور، رکورد جدید کاربر رو اضافه میکنه...
و در خط بعد، رکورد فعلی، رکوردی است که کاربر اضافه کرده.

sm_ezadpanah
پنج شنبه 25 مرداد 1386, 13:16 عصر
یعنی اون خط
ds.Tables["your table"].Rows.InsertAt(userDataRow, rowIndex);
محل درج رو مشخص می کنه

PC2st
پنج شنبه 25 مرداد 1386, 14:27 عصر
اون خط در محل rowIndex یک رکورد جدید رو درج میکنه... اگر از دیتاست برای نمایش اطلاعات استفاده کرده باشید.