منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف أنقل سجلات مختارة من DataGridView موجود في فورم إلى DataGridView في فورم آخر ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
هذا صحيح لأني أريد أن يكون المتغير row مصفوفة من نوع DataGridViewRow   ،
حتى أخزن فيه مجموعة السجلات التي سيختارها المستخدم من شاشة البحث .
السلام عليكم ورحمة الله

أخي أشرف

قصدي أن وضع تلك الأقواس خطأ يجب حذفها، لأن SelectedRows هي المصفوفة ودور المتغير row يأخذ سطر واحد من المصفوفة
تمام ..
بس أنا أبغى أوقف على  كل SelectedRows  منهم
بحيث أدخل شرطاً يقول إذا كان السجل المختار هو  [SelectedRows[0 ، نضع بياناته
في السجل الحالي الذي يقف عليه المستخدم
أما باقي السجلات التالية :  [SelectedRows[1 وَ  [SelectedRows[2 وَ  [SelectedRows[3 .. الخ  ، فيتم إدراجها في نهاية الجريد الخاص بالفاتورة.
فكيف أفعل ذلك رجاء ؟!!
السلام عليكم ورحمة الله

أخي أشرف

هذا مثال للطريقة التي تريدها في آخر رد لكم، يجب القراءة أكثر عن طريقة عمل foreach
PHP كود :
foreach (DataGridViewRow r in frm.simpleMultiselectDataGridView1.SelectedRows)
{
    if (
r.Index == 0)
    {
        
// هنا يكون row هو SelectedRows[0]
    
}
    else
    {
        
// هنا يكون row هو لباقي الأسطر
    
}

أخي مهموم أشكرك على اهتمامك بالموضوع ، وردودك السريعة ، ولكن للأسف مستحيل أن ينجح هذا الكود في عمل الفكرة التي أريد تنفيذها .. لاحظ :
قمت بإظهار أرقام الـ Index الخاصة بالسجلات المختارة ، في مسج بوكس ، فأظهر لي أرقام الـ Index على مستوى الـ DataGidView ، وهذا ليس هو المطلوب :



النتيجة :
المطلوب عمل Index مستقل للسجلات المختارة ، بعيداً عن الـ Index الخاص بالـ DataGridView
السلام عليكم ورحمة الله

أخي أشرف

هذه فعلا هي أرقام الأسطر المختارة فما المشكلة!

إذا كان المقصود أن الترتيب معكوس ضع هذا السطر بدل الموجود سابقاً
PHP كود :
foreach (DataGridViewRow r in frm.simpleMultiselectDataGridView1.SelectedRows.Cast<DataGridViewRow>().Reverse()) 
المشكلة أني ما راح أعرف ايش أول سجل محدد من الـ Grid الموجود في شاشة البحث ، لأني ما أدري أي سجل هو اللي حيختاره المستخدم ، لأن أول سجل محدد سأقوم بوضع بياناته فيالسجل الحالي الذي يقف عليه المستخدم بالماوس ..
فلو قلت : if (r.Index == 0)
 لن ينفع ذلك لأن المستخدم قد لا يختار أول سجل في الجريد ..

عموماً .. كل اللي أبغاه إن كان الميثود [0]SelectedRows  عبارة عن مصفوفة ، أريد طريقة لعمل Loop على السجلات التي بداخل هذه المصفوفة :
السلام عليكم ورحمة الله

أخي أشرف

بعد تبديل السطر الذي ذكرته لك في الرد الأخير فإن r.Index == 0 يعني أول سطر تم اختياره والذي هو [0]SelectedRows بغض النظر عن ترتيبه في DataGridView1.Rows

أتمنى هذه المرة قد وضحت لك الصورة

PHP كود :
foreach (DataGridViewRow r in frm.simpleMultiselectDataGridView1.SelectedRows.Cast<DataGridViewRow>().Reverse()) 
{
    if (
r.Index == 0)
    {
        
// هنا يكون row هو SelectedRows[0]
    
}
    else
    {
        
// هنا يكون row هو لباقي الأسطر
    
}

غير صحيح مع الأسف لاحظ النتيجة :
الذي تغير هنا هو تعديل الترتيب فقط ، ولكن المشكلة قائمة..
المطلوب تطلع المسجات هكذا 0  -  1  -  2 
السلام عليكم ورحمة الله

أخي أشرف

إن 0-1-2 هي ترتيب في الجدول وهي (1001001 و 1001002 و 1001003)
3-5-9 عي التي تم اختيارها وتجدها في المصفوفة SelectedRows وهي (1001004 و 1001006 و 1001010)

وبهذا يكون
r.Index == 0 .... SelectedRows[0] = 1001004
r.Index == 1 .... SelectedRows[1] = 1001006
r.Index == 2 .... SelectedRows[2] = 1001010

يبدو أنك لم تتمكن من التفريق بين SelectedRows و Rows الخاصة بالجدول DataGridView
الصفحات : 1 2 3