نمایش نتایج 1 تا 19 از 19

نام تاپیک: خطا در زمان ریختن دیتاتیبل درون گریدویو

  1. #1
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    خطا در زمان ریختن دیتاتیبل درون گریدویو

    سلام. من میخوام که درون هر گریدویو حدااکثر 6 رکورد داشته باشم. یعنی اگر جستجوی من ( یعنی چیزی که داخل دیتاتیبل ریختم) مثلا 8 رکورد داشت 6رکورد اول درون گرید اول و 2 رکورد آخر هم درون گرید دوم ریخته بشه. من کد زیر رو نوشتم ولی خطای مربوط به خارج از محدوده بودن ایندکس میده ( من که هرچی فکر میکنم می بینم درست مقداردهی میکنم. موقع اجرا عدد 8 درون countrecorddt قرار میگیره. حالا مشکل از کجاست نمیدونم...).
    کد :
    countrecorddt = DtStudent.Rows.Count;
    if(countrecorddt <= 6)
    GrdTotalExam1.DataSource = mystudent.DtStudent;
    if (countrecorddt > 6 && countrecorddt <= 12)
    {
    for (int i = 0; i < 6; i++)
    {
    GrdTotalExam1.Rows[i].Cells["ClmExamID"].Value = DtStudent.Rows[i]["ExamID"].ToString();
    GrdTotalExam1.Rows[i].Cells["ClmDateExam"].Value = DtStudent.Rows[i]["DateExam"].ToString();
    }
    for (int j = 0; j < countrecorddt - 6; j++)
    {
    GrdTotalExam2.Rows[j].Cells["ClmExamID"].Value = DtStudent.Rows[ 6 + j]["ExamID"].ToString();
    GrdTotalExam2.Rows[j].Cells["ClmDateExam"].Value = DtStudent.Rows[ 6 + j]["DateExam"].ToString();
    }
    }

    خطا (به همون خط اول مربوط به مقداردهی گرید گیر میده) :
    Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index
    آخرین ویرایش به وسیله veniz2008 : جمعه 24 شهریور 1391 در 19:11 عصر

  2. #2

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    درود بر شما
    در کد متوجه اشکال خواهید شد

    countrecorddt = DtStudent.Rows.Count;
    if (countrecorddt <= 6)
    GrdTotalExam1.DataSource = mystudent.DtStudent;
    if (countrecorddt > 6 && countrecorddt <= 12)
    {

    for (int i = 0; i < 6; i++)
    {
    GrdTotalExam1.Rows.Add();
    GrdTotalExam1.Rows[i].Cells["ClmExamID"].Value = DtStudent.Rows[i]["ExamID"].ToString();
    GrdTotalExam1.Rows[i].Cells["ClmDateExam"].Value = DtStudent.Rows[i]["DateExam"].ToString();
    }
    for (int j = 0; j < countrecorddt - 6; j++)
    {
    GrdTotalExam2.Rows.Add();
    GrdTotalExam2.Rows[j].Cells["ClmExamID"].Value = DtStudent.Rows[6 + j]["ExamID"].ToString();
    GrdTotalExam2.Rows[j].Cells["ClmDateExam"].Value = DtStudent.Rows[6 + j]["DateExam"].ToString();
    }
    }


    طراحی شما دارای اشکال هستش
    اگر تمایل به تغییر دارید اعلام کنید تا کمکتون کنم

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    حتما. خوشحال میشم ایراد کارم رو بفهمم.

  4. #4

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    چرا شما باید دو گرید داشته باشید
    فقط برای نمایش اطلاعات کاربرد داره؟
    اگر 6رکورد اول اطلاعات مهم محسوب می شوند
    می توانید آنها را در یک گرید بگذارید و 6رکورد اول را با رنگ خاکستری مشخص کنید
    این شیوه شما در بلند مدت مشکلاتی به همراه داره

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    من حداکثر 24 تا رکورد دارم که اولویت همشون یکسانه. درون فرمم اطلاعات دیگه ای هم دارم که امکان نمایش همه رکوردها درون یک گرید وجود نداره( میشه نمایش داد ولی زیبایی نداره). من در واقع 4 تا گرید دارم که هر گرید حداکثر میخوام 6 تا رکورد رو نمایش بده( این 4 گرید سایزشون کوچیک هست که در کنار همدیگه قرار دارند و فضای کمی رو اشغال میکنند).

  6. #6
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    اینم یه عکس از گریدهام تا منظورم رو بهتر متوجه بشید ( منظور از ش ،شماره آزمون هست. فیلد وضعیت یک چک باکس هست که به گرید اضافه کردم و وضعیت انتخاب شدن یا نشدن رکورد(آزمون) رو مشخص میکنه.)
    four grid.JPG

  7. #7

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

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

  8. #8
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    نقل قول نوشته شده توسط Arash_janusV3 مشاهده تاپیک
    شما می توانید از TreeView هم استفاده کنید
    همه را در یک جا بگذارید فقط باید روش کار کنید
    اما هم زیبا تر می شه و یا اینکه اینها رو در یک گرید نمایش بدید ولی به سبک زیر شاخه ای
    یعنی کاربر با زدن یک علامت + در گرید می تواند جزئیات بیشتری را ببیند
    این اون چیزی نیست که من میخوام. اگر امکان داره با همین روشی که خودم انتخاب کردم توضیح بدید. یعنی من اگر 8 تا رکورد داشته باشم چطوری میتونم 6 تای اول رو داخل گرید1 و 2 تای آخر رو درون گرید2 نمایش بدم؟.تشکر.

  9. #9
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    کدی رو که گذاشته بودید تست کردم. اما یه مشکل دیگه پیش میاد.من 2 تا کمبو دارم که با توجه به مقدارهای کمبوها حداکثر 24 آزمون نشون داده میشه. در مرحله اول هر 8 رکورد نمایش داده میشه. در مرحله دوم 2 رکورد میخوام نمایش داده بشه (یعنی با توجه به مقادیر کمبو ها 2 رکورد دارم. تا اینجا هیچ مشکلی نیست) ولی زمانیکه دوباره میخوام اون 8 رکورد رو نشون بدم خطای Cannot clear this list رخ میده( به خط اول بعد از if دوم گیر میده).
    کدهای درون رویداد SelectedIndexChanged :
    countrecorddt = DtStudent.Rows.Count;
    if (countrecorddt <= 6)
    {
    GrdTotalExam1.DataSource = DtStudent;
    GrdTotalExam2.Rows.Clear();
    }
    if (countrecorddt > 6 && countrecorddt <= 12)
    {
    GrdTotalExam1.Rows.Clear();
    for (int i = 0; i < 6; i++)
    {

    GrdTotalExam1.Rows.Add();
    GrdTotalExam1.Rows[i].Cells["ClmExamID"].Value = DtStudent.Rows[i]["ExamID"].ToString();
    GrdTotalExam1.Rows[i].Cells["ClmDateExam"].Value = DtStudent.Rows[i]["DateExam"].ToString();
    }
    for (int j = 0; j < countrecorddt - 6; j++)
    {
    GrdTotalExam2.Rows.Add();
    GrdTotalExam2.Rows[j].Cells["ClmExamID"].Value = DtStudent.Rows[6 + j]["ExamID"].ToString();
    GrdTotalExam2.Rows[j].Cells["ClmDateExam"].Value = DtStudent.Rows[6 + j]["DateExam"].ToString();
    }
    }
    آخرین ویرایش به وسیله veniz2008 : شنبه 25 شهریور 1391 در 12:38 عصر

  10. #10
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    نقل قول نوشته شده توسط mafaman2003 مشاهده تاپیک
    دقیقا خطا در کدوم حلقه و به چه خطی گرفته میشه؟
    به خط نهم یعنی GrdTotalExam1.Rows.Clear();

  11. #11

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    به خط نهم یعنی GrdTotalExam1.Rows.Clear();
    برای چی پاک می کنید؟
    اینطوری اگه 8 رکورد داشتع باشید ، که فقط در گریددوم ، 2 رکورد نمایش داده می شه!


    اگه دوازده ستون درست کنید (در یک گرید) چی؟
    هر نام در سه ستون تکراربشه!
    اینطوری بهتر نمی شه؟!

  12. #12
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    نقل قول نوشته شده توسط ehsan7007 مشاهده تاپیک
    برای چی پاک می کنید؟
    اینطوری اگه 8 رکورد داشتع باشید ، که فقط در گریددوم ، 2 رکورد نمایش داده می شه!


    اگه دوازده ستون درست کنید (در یک گرید) چی؟
    هر نام در سه ستون تکراربشه!
    اینطوری بهتر نمی شه؟!
    فرض کنید با توجه به مقادیر کمبوها، 8 رکورد داشته باشم (در لحظه لود شدن 8 رکورد دارم که 6 رکورد درون گرید1 و 2 رکورد هم درون گرید2). حالا کاربر مقدار کمبو رو طوری تغییر میده که خروجی میشه 2 رکورد. خوب بایستی اول سطرها رو پاک کنم بعدش بیام از نو سطر اضافه کنم. در مورد 12 ستون در گرید کار نکردم ولی اگه حتی قابل پیاده سازی باشه بازم ظاهر زیبایی نداره.

  13. #13

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    برای حذف اطلاعات گرید از این روش می توانید استفاده کنید

    GrdTotalExam1.DataSource = new DataTable();

  14. #14

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    فکر می کنم اینطوری بهتر باشه چون من که می خوتستم گریدم رو پاک کنم ، با
    GrdTotalExam1.Rows.Clear();

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

    موفق باشید.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    متاسفانه حتی همون بار اول هم لود نمیشه و خطای زیر رو میده :
    کدها :
    countrecorddt = DtStudent.Rows.Count;
    if (countrecorddt <= 6)
    {
    GrdTotalExam2.Rows.Clear();
    GrdTotalExam1.DataSource = DtStudent;
    }
    if (countrecorddt > 6 && countrecorddt <= 12)
    {
    GrdTotalExam1.DataSource = new DataTable();
    GrdTotalExam2.Rows.Clear();
    for (int i = 0; i < 6; i++)
    {
    GrdTotalExam1.Rows.Add();
    GrdTotalExam1.Rows[i].Cells["ClmExamID"].Value = DtStudent.Rows[i]["ExamID"].ToString();
    GrdTotalExam1.Rows[i].Cells["ClmDateExam"].Value = DtStudent.Rows[i]["DateExam"].ToString();
    }
    for (int j = 0; j < countrecorddt - 6; j++)
    {
    GrdTotalExam2.Rows.Add();
    GrdTotalExam2.Rows[j].Cells["ClmExamID2"].Value = DtStudent.Rows[6 + j]["ExamID"].ToString();
    GrdTotalExam2.Rows[j].Cells["ClmDateExam2"].Value = DtStudent.Rows[6 + j]["DateExam"].ToString();
    }
    }

    خطای رخ داده ( به حلقه for اول و به خط GrdTotalExam1.Rows.Add(); گیر میده) :
    Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.

  16. #16

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو


    GrdTotalExam2.Rows.Clear();

    به این لازم نیست

  17. #17

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    قبل از خط GrdTotalExam1.Rows.Clear(); دیتاسورس گریدویو را null قرار بدید چون ممکنه قبلا دیتاسورس را ست کرده باشید. ممکن هم هست ست نشده باشه پس خط GrdTotalExam1.Rows.Clear(); لازمه.

  18. #18
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    به جبر روزگار تهران هستم.
    پست
    2,718

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

    نقل قول نوشته شده توسط Arash_janusV3 مشاهده تاپیک

    GrdTotalExam2.Rows.Clear();

    به این لازم نیست
    این جواب نداد. یعنی همون خطای قبلی رخ داد.

    نقل قول نوشته شده توسط mafaman2003 مشاهده تاپیک
    قبل از خط GrdTotalExam1.Rows.Clear(); دیتاسورس گریدویو را null قرار بدید چون ممکنه قبلا دیتاسورس را ست کرده باشید. ممکن هم هست ست نشده باشه پس خط GrdTotalExam1.Rows.Clear(); لازمه.
    دیتاسورس گرید رو null کردم. الان خطای زیر رو میده :
    Column named ClmExamID cannot be found.
    Parameter name: columnName

  19. #19

    نقل قول: خطا در زمان ریختن دیتاتیبل درون گریدویو

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


    اینطوری هم میشه:
                int countrecorddt = DtStudent.Rows.Count;
    if (countrecorddt <= 6)
    {
    GrdTotalExam1.DataSource = DtStudent;
    GrdTotalExam2.Rows.Clear();
    }
    else if (countrecorddt > 6 && countrecorddt <= 12)
    {
    dt1.Clear();
    dt2.Clear();
    for (int i = 0; i < 6; i++)
    {
    dt1.ImportRow(DtStudent.Rows[i]);
    }
    for (int j = 0; j < countrecorddt - 6; j++)
    {
    dt2.ImportRow(DtStudent.Rows[j + 6]);
    }

    GrdTotalExam1.DataSource = dt1;
    GrdTotalExam2.DataSource = dt2;
    }

تاپیک های مشابه

  1. سوال: خطا در هنگام ریختن فیلدهای جدول درون تکست باکس
    نوشته شده توسط firoozi90 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: جمعه 10 شهریور 1391, 21:07 عصر
  2. یه خطا در زمان اجرای Visual Stuido 2005
    نوشته شده توسط vb_nima در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: شنبه 03 شهریور 1386, 20:49 عصر
  3. ارسال ID تکست باکس درون گریدویو به جاوااسکریپت
    نوشته شده توسط sarasara در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: دوشنبه 22 مرداد 1386, 09:25 صبح
  4. خطا در زمان اجرای برنامه ASP dot NET
    نوشته شده توسط mRizvandi در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 07 دی 1384, 18:29 عصر
  5. پیغام خطا در زمان ایجاد پروژه
    نوشته شده توسط faramarz_s در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: جمعه 09 مرداد 1383, 14:19 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •