PDA

View Full Version : مشکل یا selectionchanged در دیتاگرید



ahmad_hamdi
دوشنبه 24 مهر 1391, 17:34 عصر
با سلام خدمت دوستان یه مشکل کوچولو در این زمینه دارم
من کد زیر و توی دکمه میزارم

dataGridView1.Rows[10].Selected = true;

حالا روی این ایندکس وایمیسه ولی کدی که برای رویداد selectionchanged نوشتم کار نمیکنه و باید یه بار ایندکس و عوض کنم تا کد این رویداد اجرا بشه

دوستان راه حلی داره؟ با تشکر

Directx
دوشنبه 24 مهر 1391, 17:53 عصر
نه شما احتمالا کاری کردی که تو موقع لود یا ... مثلا ستون 10 از گریدت قبلا انتخاب شده برا همین selection chandeg رخ نمیده شما یه بار چک کن ببین اینجوریه یا نه

SokooteShab1
دوشنبه 24 مهر 1391, 18:23 عصر
از این استفاده کن

DataGridView1.Rows[10].Selected = true;
DataGridView1.CurrentCell = DataGridView1.Rows[10].Cells[0];

ahmad_hamdi
دوشنبه 24 مهر 1391, 18:54 عصر
با تشکر از دوستان , نه دوست عزیز مقدارش متغیر هستش مثلا ردیفی که کمترین مبلغ و داره انتخاب میشه که هر دفعه متفتاوته
دوست عزیز کدتون کار نکرد برای من

ahmad_hamdi
سه شنبه 25 مهر 1391, 12:52 عصر
آفا من مشکلم هنوز حل نشده ها
یاری کنید مرا خیلی مهمه
ممنون

حسین شهریاری
سه شنبه 25 مهر 1391, 13:30 عصر
ببینید Position مربوط به BindingSource میتونه بهتون کمک کنه؟

ahmad_hamdi
سه شنبه 25 مهر 1391, 17:54 عصر
راستش از binding استفاده نمیکنم کدهام لایه ای هستش

morteza271
سه شنبه 25 مهر 1391, 17:59 عصر
کدتون رو بذارین شاید مشکلتون رو متوجه بشیم.
وگرنه طبق توضیحاتی که دادین نباید مشکلی داشته باشه!

ahmad_hamdi
سه شنبه 25 مهر 1391, 19:33 عصر
کد رو که همون یه خطی هستش که بالا گذاشتم فقط یه خط کدم گذاشتم که اسکرول حرکت کنه به محلی که ردیفش انتخاب شده

ahmad_hamdi
پنج شنبه 27 مهر 1391, 14:29 عصر
استادان عزیز یه روش دیگه ای میشناسین که کار کنه؟

Directx
پنج شنبه 27 مهر 1391, 15:17 عصر
لطفا کدهای قبل از اون خط رو قرار بدید تا خطاش رو بررسی کنیم ای کد حتما رویداد selection changed رو فعال خواهد کرد

ahmad_hamdi
جمعه 28 مهر 1391, 14:40 عصر
کلا همین دو خط هستش:
dataGridView1.Rows[min_index].Selected = true;
dataGridView1.FirstDisplayedScrollingRowIndex = min_index;
minindex ردیفیه که کمترین مبلغ و داره

ahmad_hamdi
شنبه 29 مهر 1391, 09:26 صبح
جالب اینجاست که سطر مورد نظر انتخاب میشه ولی رویداد selectionchange رخ نمیده موندم چی کار کنم

morteza271
شنبه 29 مهر 1391, 14:19 عصر
جالب اینجاست که سطر مورد نظر انتخاب میشه ولی رویداد selectionchange رخ نمیده موندم چی کار کنم

این دو کار رو انجام بدین شاید درست بشه (البته اگه تا الان خودتون انجام ندادین):
خاصیت MultiSelect گریدتون رو برابر False قرار بدین.

و خاصیت SelectionMode رو هم برابر FullRowSelect بذارین.

شاید درست بشه!!!!

Directx
شنبه 29 مهر 1391, 16:46 عصر
همین الان چکش کردم برای من که کار کرد؟
مطمهن هستید که تابع رو به رویداد selectionchanged اضافه کردید؟

Directx
شنبه 29 مهر 1391, 16:47 عصر
همین الان چکش کردم برای من که کار کرد؟
مطمئن هستید که تابع رو به رویداد selectionchanged اضافه کردید؟

ahmad_hamdi
شنبه 29 مهر 1391, 21:59 عصر
ممنون دوست عزیز اون دو کارر و انجام دادم
بله داخل این رویداد یک متد رو صدا زدم همین

توی اون متد هم گفتم یه سری سلولهای سطر جاری خونده بشه و یه سری اطلاعات از اینها کسب بشه این رویداد اتفاق میفته نه برای سطر انتخاب شده فعلی بلکه برای سطری که قبلا انتخاب شده مثل این سه خط

stu_id = Convert.ToInt64(dataGridView1.CurrentRow.Cells[13].Value);

schoolin_id = Convert.ToInt64(dataGridView1.CurrentRow.Cells[14].Value);

Class = Convert.ToInt32(dataGridView1.CurrentRow.Cells[15].Value);

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

morteza271
شنبه 29 مهر 1391, 22:12 عصر
ممنون دوست عزیز اون دو کارر و انجام دادم
بله داخل این رویداد یک متد رو صدا زدم همین

توی اون متد هم گفتم یه سری سلولهای سطر جاری خونده بشه و یه سری اطلاعات از اینها کسب بشه این رویداد اتفاق میفته نه برای سطر انتخاب شده فعلی بلکه برای سطری که قبلا انتخاب شده مثل این سه خط

stu_id = Convert.ToInt64(dataGridView1.CurrentRow.Cells[13].Value);

schoolin_id = Convert.ToInt64(dataGridView1.CurrentRow.Cells[14].Value);

Class = Convert.ToInt32(dataGridView1.CurrentRow.Cells[15].Value);

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

چرا اینا رو از اول نمیگین دوست عزیز!! شما میگفتین که رویداد SelectionChanged اجرا نمیشه!!! پس اجرا میشه ولی سطر جاری رو درست برنمیگردونه!!!
یادمه منم دقیقا همین مشکل رو داشتم و برای برطرف کردنش مجبور شدم که راه حل زیر رو برم :

شما اگه به جای CurrentRow از SelectedRows[0] استفاده کنید مشکلتون حل میشه!

تا جاییکه من متوجه شدم این یه مشکل از گرید هست که وقتی که با کد سطر جاری رو تغییر میدیم CurrentRow تغییر نمیکنه و این مشکل پیش میاد.ولی روشی که گفتم مشکلی نداره تست کنید متوجه می شید.

یعنی مثلا شما باید کد زیر رو استفاده کنید :
stu_id = Convert.ToInt64(dataGridView1.SelectedRows[0].Cells[13].Value);

موفق باشید

ahmad_hamdi
یک شنبه 30 مهر 1391, 08:44 صبح
ممنون چکش میکنم

ahmad_hamdi
یک شنبه 30 مهر 1391, 15:56 عصر
دوست عزیز روش ما رو هم امتحان کردم ولی بازم نشد