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

نام تاپیک: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

  1. #1

    یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    دوستان سلام
    توی یه فرمی 40 تا کمبوباکس دارم (مربوط به رژیم غذایی یک بخش هستش) که اطلاعات کمبوباکسها یکسان هستش.
    موقع لود فرم اونها رو با حلقه پر میکنم. اما انگار لود فرم کمی طول میکشه. راه ساده تری برای اینکار وجود داره؟
    ممنون

  2. #2
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    728

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا کمبوباکس

    به این صورت

       private int[] n = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    private void Form1_Load(object sender, EventArgs e)
    {
    comboBox1.DataSource = comboBox2.DataSource = comboBox3.DataSource = comboBox4.DataSource = comboBox5.DataSource = comboBox6.DataSource = comboBox7.DataSource = comboBox8.DataSource = comboBox9.DataSource = comboBox10.DataSource = n;
    }

    اگر هزارتا هم کمبو باکس باشه همین جور مقدار دهی میکنند

  3. #3

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا کمبوباکس

    نقل قول نوشته شده توسط alexmcse مشاهده تاپیک
    به این صورت

       private int[] n = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
    private void Form1_Load(object sender, EventArgs e)
    {
    comboBox1.DataSource = comboBox2.DataSource = comboBox3.DataSource = comboBox4.DataSource = comboBox5.DataSource = comboBox6.DataSource = comboBox7.DataSource = comboBox8.DataSource = comboBox9.DataSource = comboBox10.DataSource = n;
    }

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

     DataTable RejimTbl = new DataTable();
    con.SelectRejim_().Fill(RejimTbl);//متد فراخوانی رژیمها که بصورت دیتاآداپتور دریافت و در دیتاتیبل ریخته میشود

    string[] Rejimes = new string[RejimTbl.Rows.Count];

    int tt = 0;

    foreach (DataRow item in RejimTbl.Rows)
    {
    Rejimes[tt] = item[2].ToString().Trim();

    tt++;
    }

    Rejim1.DataSource = Rejim2.DataSource = Rejim3.DataSource = Rejim4.DataSource = Rejim5.DataSource = Rejim6.DataSource = Rejim7.DataSource =
    Rejim8.DataSource = Rejim13.DataSource = Rejim18.DataSource = Rejim23.DataSource = Rejim28.DataSource = Rejim33.DataSource = Rejim37.DataSource =
    Rejim9.DataSource = Rejim14.DataSource = Rejim19.DataSource = Rejim24.DataSource = Rejim29.DataSource = Rejim34.DataSource = Rejim38.DataSource =
    Rejim10.DataSource = Rejim15.DataSource = Rejim20.DataSource = Rejim25.DataSource = Rejim30.DataSource = Rejim35.DataSource = Rejim39.DataSource =
    Rejim11.DataSource = Rejim16.DataSource = Rejim21.DataSource = Rejim26.DataSource = Rejim31.DataSource = Rejim36.DataSource = Rejim40.DataSource =
    Rejim12.DataSource = Rejim17.DataSource = Rejim22.DataSource = Rejim27.DataSource = Rejim32.DataSource = Rejimes;


    آخرین ویرایش به وسیله SardareEshgh : شنبه 21 مهر 1397 در 22:34 عصر

  4. #4

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    نقل قول نوشته شده توسط SardareEshgh مشاهده تاپیک
    دوستان سلام
    توی یه فرمی 40 تا کمبوباکس دارم (مربوط به رژیم غذایی یک بخش هستش) که اطلاعات کمبوباکسها یکسان هستش.
    موقع لود فرم اونها رو با حلقه پر میکنم. اما انگار لود فرم کمی طول میکشه. راه ساده تری برای اینکار وجود داره؟
    ممنون
    کد لودفرم را قرار بدید.

  5. #5

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    کد لودفرم را قرار بدید.
    در این حالت لود فرم کمی طول میکشه.(حدود 4تا5 ثانیه). شایدم من زیادی حساسم!
       private void Form1_Load(object sender, EventArgs e)
    {
    timer1.Enabled = true;
    ///////todey
    DateMetod();


    // btnSave.Enabled = false;

    frm1Connection con = new frm1Connection();
    UserId = 772633;
    int dastrasi = con.Dastrasi(UserId);//سطح دسترسی کاربر

    lblBakhshName.Text = con.SelectbakhshName(UserId);//کاربر در کدام بخش قرار دارد

    DataTable Rejim = con.SelectRejim_();////فراخوانی رژیمهای غذایی که حداکثر 10 مورد می باشد

    for (int ww = 1; ww <= 40; ww++)

    foreach (DataRow item in Rejim.Rows)

    ((ComboBox)this.Controls["Rejim" + ww]).Items.Add(item[2].ToString().Trim());//پر کردن کمبوها



    }
    آخرین ویرایش به وسیله SardareEshgh : یک شنبه 22 مهر 1397 در 06:16 صبح

  6. #6
    کاربر دائمی آواتار alexmcse
    تاریخ عضویت
    فروردین 1391
    محل زندگی
    شیراز
    پست
    728

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    برای هر مقداری که میخوای به کمبو باکس بدی یک متغییر تعریف کنید
    دیگر کمبو باکس ها با هم تغییر نمیکند
           private int[] n1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    private int[] n2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n3 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n4 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n5 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n6 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n7 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n8 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n9 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private int[] n10 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    private void Form1_Load(object sender, EventArgs e)
    {
    comboBox1.DataSource = n1;
    comboBox2.DataSource = n2;
    comboBox3.DataSource = n3;
    comboBox4.DataSource = n4;
    comboBox5.DataSource = n5;
    comboBox6.DataSource = n6;
    comboBox7.DataSource = n7;
    comboBox8.DataSource = n8;
    comboBox9.DataSource = n9;
    comboBox10.DataSource = n10;
    }

  7. #7

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    من با این روش پر میکنم مشکل سرعت ندارم


         foreach (,,)            {
    Cmb_Dehestan.SelectedValuePath = "Key";
    Cmb_Dehestan.DisplayMemberPath = "Value";
    Cmb_Dehestan.Items.Add(new KeyValuePair<int, string>(Convert.ToInt16(item.ID_Dehestan), item.Dehestan_Name.ToString()));
    }


    foreach رو بر اساس برنامت تغیر بده

  8. #8

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    نقل قول نوشته شده توسط SardareEshgh مشاهده تاپیک
    در این حالت لود فرم کمی طول میکشه.(حدود 4تا5 ثانیه). شایدم من زیادی حساسم!
       private void Form1_Load(object sender, EventArgs e)
    {
    timer1.Enabled = true;
    ///////todey
    DateMetod();


    // btnSave.Enabled = false;

    frm1Connection con = new frm1Connection();
    UserId = 772633;
    int dastrasi = con.Dastrasi(UserId);//سطح دسترسی کاربر

    lblBakhshName.Text = con.SelectbakhshName(UserId);//کاربر در کدام بخش قرار دارد

    DataTable Rejim = con.SelectRejim_();////فراخوانی رژیمهای غذایی که حداکثر 10 مورد می باشد

    for (int ww = 1; ww <= 40; ww++)

    foreach (DataRow item in Rejim.Rows)

    ((ComboBox)this.Controls["Rejim" + ww]).Items.Add(item[2].ToString().Trim());//پر کردن کمبوها



    }
    حلقه را به صورت زیر بنویسید
                for (int ww = 1; ww <= 40; ww++)
    {
    ComboBox cb = Controls["Rejim" + ww] as ComboBox;
    cb.DataSource = Rejim.AsDataView();
    cb.DisplayMember = "ColumnNameToDisplay";
    cb.ValueMember = "PrimaryKeyName";
    }

    به جای ColumnNameToDisplay نام ستونی که بایست نمایش داده بشه و PrimaryKeyName هم نام ستون کلید رو قرار بدید.
    آخرین ویرایش به وسیله Mahmoud.Afrad : یک شنبه 22 مهر 1397 در 19:31 عصر

  9. #9
    مدیر کل سایت آواتار محمد آشتیانی
    تاریخ عضویت
    مهر 1384
    محل زندگی
    تهران
    پست
    1,476

    نقل قول: یه روش ساده تر برای پر کردن دیتاسورس 40 تا ComboBox

    سلام
    یک متد بنویسید به این شرح
            private int[] myArray = {1, 2, 3, 4, 5, 6, 7, 8, 9};




    private void FillComboBoxes(Control hostControl)
    {
    foreach (var control in hostControl.Controls.OfType<ComboBox>())
    {
    control.DataSource = myArray.ToArray();
    }
    }


    در رویداد فرم لود به این صورت فراخوانی بفرمائید
                FillComboBoxes(this);


    اگر هم خیلی زمان بر هست ، می تونید به صورت Async دیتا رو لود کنید.
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

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

  1. سوال: اضافه شدن تمام نام جدول های ی دیتاباس به کنترل combobox
    نوشته شده توسط bozhmehrani در بخش C#‎‎
    پاسخ: 4
    آخرین پست: جمعه 13 خرداد 1390, 20:58 عصر
  2. سوال: اضافه کردن به comboBox دارای دیتاسورس
    نوشته شده توسط NiMble_m در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 11 اردیبهشت 1390, 13:59 عصر
  3. ComboBox در یک خانه از دیتاگرید
    نوشته شده توسط navidiran در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 09 آبان 1389, 15:49 عصر
  4. سوال: مقایسه ی یک enum با یه ComboBox که همون enum دیتاسورسشه
    نوشته شده توسط hossein_ignore در بخش C#‎‎
    پاسخ: 1
    آخرین پست: جمعه 02 مهر 1389, 23:46 عصر
  5. combobox در دیتاگرید
    نوشته شده توسط rahil_2008 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: جمعه 01 آبان 1388, 15:28 عصر

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

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