PDA

View Full Version : نگهداری سطر جاری در گریدویو



Leyla2011
یک شنبه 27 شهریور 1390, 16:03 عصر
با عرض سلام خدمت اساتید محترم

من یه مشکل با دیتاگریدویو تو سی شارپ دارم

یک سری اطلاعات تو گرید ویو دارم که با انتخاب هر سطر اطلاعاتش در یک سری تکست باکس نمایش داده میشه که تو تکست باکس ها امکان اصلاح اطلاعات را دارم فرض کنید سطر 3 از گرید را اصلاح میکنم بعد که گرید را رفرش میکنم سطر جاری تغییر میکنه و فوکوس روی سطر اول میره من میخوام رو همون سطر جاری یعنی سطر 3 بمونه میدونید باید چی کار کنم؟

msdsbi
یک شنبه 27 شهریور 1390, 16:29 عصر
قبل از اينكه بخواي توي تكست باكس بفرستيش ايندكس گريد رو بخون كه روي همون سطر جاري هستش بعد از عمليات بروز رساني ببرش روي همون ايندكس فكر كنم منظورمو فهميده باشي در نهايت اگر خواستي بگو برات كدش رو بزارم

morteza271
یک شنبه 27 شهریور 1390, 16:31 عصر
برای این کار یه متغیر از نوع int در فذمتون ایجاد کنید و در رویداد SelectionChange گریدتون شماره سطر انتخاب شده رو در داخل این متغیر نگه داری کنید.
حالا بعد از اینکه ویرایش رو انجام دادین و گرید رو رفرش کردین کد زیر رو بنویسید :
GridContract.Rows[SelectedRow] = true;
موفق باشید

gwbasic
یک شنبه 27 شهریور 1390, 18:01 عصر
راه اصولی اینه که DataGridView و TextBox ها به یک DataSource با استفاده از BindingSource وصل باشند که دیگه نیازی به کد نویسی اضافه و رفرش کردن DataGridView نباشه و خو BindingSource این موضوع رو هندل کنه

f_pakzad
یک شنبه 27 شهریور 1390, 18:27 عصر
راه اصولی اینه که DataGridView و TextBox ها به یک DataSource با استفاده از BindingSource وصل باشند که دیگه نیازی به کد نویسی اضافه و رفرش کردن DataGridView نباشه و خو BindingSource این موضوع رو هندل کنه

اینکه دیتاگرید و تکست باکس وصل باشند درست. اما بعد از اینکه کاربر اطلاعات را ذخیره کرد. مگه نباید دوباره متدی که باعث پرکردن گرید میشه را فراخوانی کنیم؟ و طبعاً با فراخوانی آن متد دوباره سطراول select میشه مگر اینکه خودمون تو کد هندل کنیم

علیرضا حسن زاده
یک شنبه 27 شهریور 1390, 19:28 عصر
به روش کار با BindingSource توجه کنید با استفاده از این کنترل نیازی به Refresh ندارید

gwbasic
یک شنبه 27 شهریور 1390, 20:25 عصر
اینکه دیتاگرید و تکست باکس وصل باشند درست. اما بعد از اینکه کاربر اطلاعات را ذخیره کرد. مگه نباید دوباره متدی که باعث پرکردن گرید میشه را فراخوانی کنیم؟ و طبعاً با فراخوانی آن متد دوباره سطراول select میشه مگر اینکه خودمون تو کد هندل کنیم

نه نیازی به این کار نیست برای اطلاعت بیشتر به آموزش DataBinding که تو سایت گذاشتم مراجعه کنید. در ضمن لینک زیر هم اگه دنبال کنید می تونه کاملا جواب سوالتون رو بده
http://barnamenevis.org/showthread.php?305048-پروژه-ثبت-اطلاعات-شخصی

Leyla2011
یک شنبه 27 شهریور 1390, 23:04 عصر
قبل از اينكه بخواي توي تكست باكس بفرستيش ايندكس گريد رو بخون كه روي همون سطر جاري هستش بعد از عمليات بروز رساني ببرش روي همون ايندكس فكر كنم منظورمو فهميده باشي در نهايت اگر خواستي بگو برات كدش رو بزارم


راستش این کار کردم datagridview1.currentrow.index اما این که چطور بتوانم سطر خاصی را به
گرید ویو بفرستم نشد اگه امکان داره بیشتر راهنمایی کنید ممنون

Leyla2011
یک شنبه 27 شهریور 1390, 23:14 عصر
برای این کار یه متغیر از نوع int در فذمتون ایجاد کنید و در رویداد SelectionChange گریدتون شماره سطر انتخاب شده رو در داخل این متغیر نگه داری کنید.
حالا بعد از اینکه ویرایش رو انجام دادین و گرید رو رفرش کردین کد زیر رو بنویسید :
GridContract.Rows[SelectedRow] = true;
موفق باشید
سلام این دستور که خطا داره

Leyla2011
یک شنبه 27 شهریور 1390, 23:17 عصر
نه نیازی به این کار نیست برای اطلاعت بیشتر به آموزش DataBinding که تو سایت گذاشتم مراجعه کنید. در ضمن لینک زیر هم اگه دنبال کنید می تونه کاملا جواب سوالتون رو بده
http://barnamenevis.org/showthread.php?305048-پروژه-ثبت-اطلاعات-شخصی
باشه حتما مطالعه میکنم اما اگر روشی غیر ازdatabindingمیدونید که کمکم کنه خیلی بهتره

gwbasic
دوشنبه 28 شهریور 1390, 07:57 صبح
باشه حتما مطالعه میکنم اما اگر روشی غیر ازdatabindingمیدونید که کمکم کنه خیلی بهتره

بحث Binding برای همین منظور بوجود اومده که کار با فرم ها رو ساده تر کنه بنابراین پیشنهاد می کنم قبل از هر کاری به مطالعه این مطلب بپردازین چون بهترین و ساده ترین روش هست

seven7777777
دوشنبه 28 شهریور 1390, 23:33 عصر
وقتی با بایندینگ قضیه اینقد راحت میشه خوب از همون استفاده کنید ، از همه نظر بهتره ولی به هر حال بعد از اینکه شماره ردیف رو نگهداری کردید ، بعد از refresh شدن دیتاگرید از کد زیر برای رفتن به همون سطر اقدام کنید :

dataGridView1.Rows[شماره سطر مورد نظر].Selected = true;

Leyla2011
چهارشنبه 30 شهریور 1390, 06:33 صبح
وقتی با بایندینگ قضیه اینقد راحت میشه خوب از همون استفاده کنید ، از همه نظر بهتره ولی به هر حال بعد از اینکه شماره ردیف رو نگهداری کردید ، بعد از refresh شدن دیتاگرید از کد زیر برای رفتن به همون سطر اقدام کنید :

dataGridView1.Rows[شماره سطر مورد نظر].Selected = true;

سلام با این کار سطر highlight میشه آن علامت فلش سمت راست درheader Columnگرید روی سطر اول باقی میمونه؟ درست منظورتونو فهمیدم؟

f_pakzad
چهارشنبه 30 شهریور 1390, 13:23 عصر
سلام با این کار سطر highlight میشه آن علامت فلش سمت راست درheader Columnگرید روی سطر اول باقی میمونه؟ درست منظورتونو فهمیدم؟

dgv.CurrentCell = dgv[شماره سطر مورد نظر, نام ستون];
و در دیتاگرید خصوصیت selectionmod روی FullRowSelect باشد.

Leyla2011
چهارشنبه 30 شهریور 1390, 15:47 عصر
dgv.CurrentCell = dgv[شماره سطر مورد نظر, نام ستون];
و در دیتاگرید خصوصیت selectionmod روی FullRowSelect باشد.
مرسی f_pakzad دقیقا همینو میخواستم