PDA

View Full Version : سوال: جابجایی سطرهای دیتاگریدویو توسط کاربر



tara1367
دوشنبه 13 آبان 1392, 08:55 صبح
سلام دوستان
من میخوام در برنامم کاربر با زدن دکمه هایی که خودم روی فرم گذاشتم مثلا یکی از اونها علامت جهت بالا و دیگری پایین است ترتیب سطرهای گرید ویو مطابق با میل کاربر عوض شود.
با تشکر

tara1367
دوشنبه 13 آبان 1392, 11:06 صبح
دوستان کسی نمی دونه؟؟؟

hamid_hr
دوشنبه 13 آبان 1392, 11:50 صبح
بايد سطرشو بفهمي چندمين سطره
int x = dgv.selectcell[0].rowindex;
بعد اطلاعات اين سطرو بريزي داخل متغيير ها
بعد بياي x-- كني
بعد اون اطلاعاتو تو سطر جديد insert كني
dgv.Rows.Insert(x,"","","","","");

tara1367
دوشنبه 13 آبان 1392, 11:57 صبح
ممنون ولی اطلاعات سطر قبلی که پاک نمیشه با add کردن دوباره یک سطر مثل قبلی اضافه میشه.

veniz2008
دوشنبه 13 آبان 1392, 12:15 عصر
سلام.
یه راهش اینه که دیتاتیبل رو دستخوش تغییرات کنی و دوباره دیتاتیبل رو به گرید نسبت بدی (سرعت اعمال تغییرات روی دیتاتیبل خیلی بیشتر از سرعت اعمال تغییرات روی خود گرید هست. چون دیتاتیبل شما درون رم قرار میگیره و کارکردن باهاش به مراتب سریعتر از خود گرید هست).
مثلا برای حرکت از پایین به بالا :
1. ابتدا محتویات سطر بالا رو بردارید (سطر بالای سطر جاری).
2. سطر جاری رو جایگزین سطر بالایی کنید.
3. سطری رو که در مرحله 1 برداشتید، جایگزین سطر جاری کنید.

if(dataGridView1.CurrentRow.Index > 0)
{
object[] rowmove = dt.Rows[dataGridView1.CurrentRow.Index -1].ItemArray;
dt.Rows[dataGridView1.CurrentRow.Index-1].ItemArray = dt.Rows[dataGridView1.CurrentRow.Index].ItemArray;
dt.Rows[dataGridView1.CurrentRow.Index].ItemArray = rowmove;
dataGridView1.DataSource = dt;
}

شرط if هم بخاطر این هست که اگر سطر جاری، اولین سطر باشه دیگه نمیشه رو به بالا حرکت کرد.
موفق باشید.

tara1367
چهارشنبه 15 آبان 1392, 10:35 صبح
ممنون پس یعنی اول باید datasource دیتا تیبل رو به دیتاسورس دیتاگریدویو تغییر بدم درسته؟؟

mohsen_popo
چهارشنبه 15 آبان 1392, 10:40 صبح
سلام ..
چرا این قدر خودتون خسته میکنید ..برید از کنترل های Dev استفاده کنید........ راحت.... اصلا نیاز به کد نویسی نیست ....امکانتد دیگری هم در اختیارت می زاره.