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

نام تاپیک: برنامه نویسی برای فیلدهای DataGridView

  1. #1
    کاربر دائمی آواتار AmirAmiri
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    353

    Exclamation برنامه نویسی برای فیلدهای DataGridView

    سلام به تمام دوستان گرامی.
    من برنامه ای ساده نوشتم که میخوام جنسیت اعضا رو توی DataGridView نشون بده اما تو بانک SQL برای تعیین جنسیت از smallint استفاده کردم و 0 نشان دهنده جنسیت مؤنث و 1 جنسیت مذکر است. حالا میخوام زمانه اجرا توی DataGridView به جای 0 و 1 متن مذکر یا مؤمث رو بنویسه. یک راهش اینه که به صورت دستی و با برنامه نویسی بعد از هر بار Fill کردن Table ، تمام رکوردهای DataGridView رو چک کنم و به جای عدد 0 متن مؤنث و به جای عدد 1 متن مذکر رو قرار بدم اما مشکل من اینجاست که به مرور زمان حجم بانک بالا میره و تعداد رکوردها خیلی زیاد میشه (بالای 100 هزار رکورد) و این کار که به صورت دستی و با برنامه نویسی بخوام روی DataGridView تغییر ایجاد کنم کمی سنگین و زمان بر خواهد بود میخواستم یه راهنمایی کنید و بگید چطوری میتونم دقیقا به همین خواسته ام برسم بدون اینکه برنامه متحمل پردازش زیادی بشه؟؟؟؟
    تازه من یک فیلد تاریخ هم دارم که به میلادی هست و میخوام که تو DataGridView اون رو هم به شمسی تبدیل کنم به همین خاطر نیاز به برنامه نویسی برای هر سلول از DataGridView دارم.
    لطفا کمکم کنید 90 درصد برنامه کامل شده و فعلا به همین مشکل گیر کردم.
    با تشکر از کمکتون.

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    خونه صفر حافظه(NULL)
    پست
    88

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    یه راهنمایی می کنم ولی کد نمیدم چون واقعا کار دارم
    توی پایگاه داده یه جدول دیگه بساز که فقط 2 تا فیلد و 2 تا رکورد داره
    اطلاعات رو به ترتیب اینجوری قرار بده:
    1 مذکر
    0 مونث
    بعد با استفاده از inner join (داخل دستور select که نوشتی) نمایش رو از هر دو جدول join کن
    یه سرچ در مورد استفاده از inner jojn کنی فکر کنم دیگه راحت به جواب برسی
    امیدوارم تونسته باشم کمکی کرده باشم
    موفق باشید!

  3. #3
    کاربر دائمی آواتار AmirAmiri
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    353

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    ممنون دوست عزیز که کمک کردین ولی من نمیخوام از این روش استفاده کنم چون در حقیقت به داده های خوده جدول نیاز دارم و فقط میخوام که تو DataGridView به صورت متنی نمایش داده بشه نه اینکه از بانک به صورت متنی بخونم. اگه میخواستم اینکارو بکنم میتونستم از Function در SQL استفاده کنم که خیلی هم راحت تر بود اما هدف من چیزه دیگه ایه.

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1388
    محل زندگی
    خونه صفر حافظه(NULL)
    پست
    88

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    نقل قول نوشته شده توسط AmirAmiri مشاهده تاپیک
    ممنون دوست عزیز که کمک کردین ولی من نمیخوام از این روش استفاده کنم چون در حقیقت به داده های خوده جدول نیاز دارم و فقط میخوام که تو DataGridView به صورت متنی نمایش داده بشه نه اینکه از بانک به صورت متنی بخونم. اگه میخواستم اینکارو بکنم میتونستم از Function در SQL استفاده کنم که خیلی هم راحت تر بود اما هدف من چیزه دیگه ایه.
    فکر کنم متوجه منظور من نشدید
    با inner join کار کردین؟ میدونین به چه دردی میخوره؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1385
    محل زندگی
    تبریز
    پست
    501

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    انو باید در داخل دستور sql از case استفاده کنی

    SELECT store_name, CASE store_name
    WHEN 'Los Angeles' THEN Sales * 2
    WHEN 'San Diego' THEN Sales * 1.5
    ELSE Sales
    END
    "New Sales",
    Date
    FROM Store_Information


    در ضمن شما باید طوری برنامه هات رو بنویسی که کمتر به حلقه نیاز داشته باشی تا سرعت برنامه پایین نیاد

  6. #6
    کاربر دائمی آواتار AmirAmiri
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    353

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    دوست عزیز جناب behzadk خیلی ممنونم که کمک کردین اما دوستان توجه داشته باشید که مشکل من به هیچ عنوان ربطی به بانک SQL و کدهای سمت سرور نداره بلکه مشکل من تنها با شی DataGridView هستش لطفا تمرکز خودتون رو روی SQL نذارید.
    فرض کنید که :
    1) میخوام تمام تاریخ های میلادی درون DataGridView رو به تاریخ شمسی تبدیل کنم.
    2) میخوام تو سلول جنسیت هر جا 0 بود بنویسه 'مؤنث' و هر جا 1 بود بنویسه 'مذکر'.
    3) میخوام تو سلول انقضا هر جا 0 بود بنویسه 'تاریخ دار' و هر جا 1 بود بنویسه 'منقضی شده'.
    چیزهایی مثله اینا رو در نظر داشته باشید. فرض کنید که تمام سلولها برای نمایش داده شدن نیاز به پردازش دارن و باید محاسباتی روشون انجام بشه مثل تبدیل تاریخ میلادی به تاریخ شمسی که در این صورت نمیشه از دستورات SQL استفاده کرد یا کلا چیزهایی که با دستورات SQL امکان پذیر نیست.
    لطفا با این ذهنیت جلو برید و به SQL فکر نکنید. باید راهی برای override کردن توابع و متدهای DataGridView وجود داشته باشه. راهی که بشه برای هر ستون خاص یک کد متفاوت رو جاگزین کرد مثلا برای ستونی که تاریخ قرار داره ، کدی رو جایگزین کنیم که تاریخ میلادی رو از سلول بخونه و به تاریخ شمسی تبدیل کنه و در نهایت تاریخ شمسی رو در سلول نمایش بده. این کار باید برای فیلد تاریخ هر رکورد به صورت خودکار انجام بشه و نیاز به این نباشه که برنامه نویس بعد از هر بار SELECT گرفتن از بانک، مجبور بشه تمام رکوردهای DataGridView رو پیمایش کنه و تاریخ ها رو شمسی کنه... امیدوارم متوجه منظورم شده باشید.
    لطفا با این ذهنیت جلو برید.
    باز هم از همگی ممنونم.
    آخرین ویرایش به وسیله AmirAmiri : جمعه 31 اردیبهشت 1389 در 15:50 عصر

  7. #7

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    سلام.
    کافیه تا VirtualMode رو true کنید، سپس با استفاده از CellValueNeeded Event اقدام به دادن اطلاعات مورد نظر برای نمایش در سلول خاصی از DataGridView کنید. در واقع این مود برای مواقعی استفاده میشه که تعداد رکوردهایی که میخواهید در DataGridView نشون بدید زیاده، و تمایلی ندارید تا یه کپی از داده های مورد نظر رو جای دیگه ای نگهداری کنید.

    برای اطلاعات بیشتر به این مقاله، یا MSDN رجوع کنید.

    موفق باشید.

  8. #8
    کاربر دائمی آواتار AmirAmiri
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    353

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    میشه یک مثال بزنید؟ نمیدونم توی این Event باید چه کار کنم؟

  9. #9

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    نقل قول نوشته شده توسط AmirAmiri مشاهده تاپیک
    میشه یک مثال بزنید؟ نمیدونم توی این Event باید چه کار کنم؟
    سلام.
    تو لینکی که دادم مثال بود، چطور ندیدید؟
    تابع OnCellValueNeeded رو لطفا در لینک قبل نگاه کنید...

    موفق باشید.

  10. #10
    کاربر دائمی آواتار AmirAmiri
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    مشهد
    پست
    353

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    راستش من که چیزی از اون مقاله نفهمیدم. وقتی خودم تو Event ی که گفتید برنامه مینویسم هیچ اتفاقی نمی افته اینم کدی که نوشتم.

            private void dgvAddEdit_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
    {
    if (e.ColumnIndex == dgvAddEdit.Columns["TS"].Index)
    {
    int y, m, d;
    DateTime dt = Convert.ToDateTime(e.Value.ToString());
    y = Persian.GetYear(dt); m = Persian.GetMonth(dt); d = Persian.GetDayOfMonth(dt);
    e.Value = y + "/" + m + "/" + d;
    }
    }


    خاصیت VirtualMode=true کردم. نمیدونم مشکل از کجاست... مطمئنا من بلد نیستم... لطفا کمک کنید.

  11. #11

    نقل قول: برنامه نویسی برای فیلدهای DataGridView

    سلام.
    لطفا پروژه کوچکی برای Reproduce کردن مشکل قرار بدید، تا بتونم خودم آزمایش کنم و ایراد رو پیدا کنم.

    موفق باشید.

    نقل قول نوشته شده توسط AmirAmiri مشاهده تاپیک
    راستش من که چیزی از اون مقاله نفهمیدم. وقتی خودم تو Event ی که گفتید برنامه مینویسم هیچ اتفاقی نمی افته اینم کدی که نوشتم.
    خاصیت VirtualMode=true کردم. نمیدونم مشکل از کجاست... مطمئنا من بلد نیستم... لطفا کمک کنید.

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

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