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

نام تاپیک: combo box

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تهران
    پست
    130

    combo box

    سلام
    به یک مشکل عجیب بر خوردم که بد جور پکرم کرده.2 تا کمبو باکس دارم اولی رو با یک دیتاست پر می کنم اگر کاربر آیتمی از کمبو اول انتخاب کرد کمبو دوم بر اساس انتخاب اول خودش رو پر می کند.نمی دونم در کدام رویداد باید این کار را انجام بدم در selected index change کومبو اول کد نوشتم نشد تنها راه حلی که پیدا کردم در رویداد کیلیک کمبو دوم کد نوشتم که خیلی ضایع شد.حالا باید چیکار کنم.

  2. #2
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile

    دوست عزیز چرا از رویدادهای TextChanged یا SelectedValueChanged استفاده نمی کنی
    مثلا یک همچین کدی

    Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
    ComboBox2.Items.Clear()
    Select Case Me.ComboBox1.Text
    Case "1"
    ComboBox2.Items.Add(1)
    ComboBox2.Items.Add(1)
    Case "2"
    ComboBox2.Items.Add(2)
    ComboBox2.Items.Add(2)
    Case "3"
    ComboBox2.Items.Add(3)
    ComboBox2.Items.Add(3)
    Case "4"
    ComboBox2.Items.Add(4)
    ComboBox2.Items.Add(4)
    End Select
    End Sub

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تهران
    پست
    130
    سلام
    ببینید روش شما درست ولی پاسخگوی من نیست.
    کمبو اول از بانک نام 300 نفر را نمایش می دهد.کمبو دوم بر اساس کمبو اول محصولات مورد علاقه فرد انتخابی از کمبو اول را می خواهد نمایش دهد در هر رویداد کمبو اول کد نوشتم ایراد گرفت.
    کمبو اول را اینگونه پر کردم
    objdataadaptervisitor.Fill(objdataset, "visitor");
    cboinvoicevisname.DataSource = objdataset.Tables["visitor"];
    cboinvoicevisname.DisplayMember = "name";
    cboinvoicevisname.ValueMember = "visID";
    cboinvoicevisname.SelectedIndex = -1;
    فقط می توانم در رویداد کلیلک کمبو دوم این کد را بنویسم
    private void cbobname_Click(object sender, EventArgs e)
    {
    String _strbarber = "SELECT bID,bname From Tblbarber WHERE visID=" + cboinvoicevisname.SelectedValue;
    SqlDataAdapter dabarber = new SqlDataAdapter(_strbarber, objconnection);
    DataSet objdataset1 = new DataSet();

    dabarber.Fill(objdataset1, "barber");
    cbobname.DataSource = objdataset1.Tables["barber"];
    cbobname.DisplayMember = "bname";
    cbobname.ValueMember = "bID";
    }
    ولی من می خوام در یکی از رویداد های کمبو اول کدم را بنویسم ولی با مشکل مواجه شده ام.
    اگر یک sample سریع برای خودتان بنویسید متوجه خواهید شد چه می گویم
    با تشکر

  4. #4
    کاربر دائمی آواتار سار
    تاریخ عضویت
    اسفند 1382
    محل زندگی
    تورین-ایتالیا
    پست
    1,044
    با فرض اینکه درک من درست باشه خواهیم داشت:
    دو جدول هست که با هم ارتباط یک به چند دارند.
    من پیشنهاد میدهم بین این دو جدول Relation بزنید. جدول اول را به کمبوی اول وصل کنیدو جدول دوم را به جدول حاصل این Relation اتصال دهید.
    من تا به حال این روش را امتحان نکردم ولی تصور میکنم خیلی ساده جواب بدهد.
    من نیز مانند شما امتحان میکنم ببینم جواب میدهد یا نه.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تهران
    پست
    130
    سلام
    توی رویداد leave کومبو اول کد رو نوشتم کمی بهتر شد. ولی در صورتی کومبو دوم پر می شه که از کومبو اول خارج شم.بدنبال راهکار بهترم

  6. #6
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile

    golagha_program جان من روش شما را نمی پسندم خیلی طول می کشه من توی پروژه های قبلیم برای اینکار همه تمام جدول هام را داخل دیتاست لود می کردم سپس با دیتاویو انرا فیلتر می کردم در این کار لازم نیست دائم به بانک وسل شی و سرعت ان بسیار بالاست مثلا کد شما به این صورت در می اید
    قسمت پرکردن


    objdataadaptervisitor.Fill(objdataset, "visitor");
    cboinvoicevisname.DataSource = objdataset.Tables["visitor"];
    cboinvoicevisname.DisplayMember = "name";
    cboinvoicevisname.ValueMember = "visID";
    cboinvoicevisname.SelectedIndex = -1;
    //فقط می توانم در رویداد کلیلک کمبو دوم این کد را بنویسم
    String _strbarber = "SELECT bID,bname From Tblbarber";
    SqlDataAdapter dabarber = new SqlDataAdapter(_strbarber, objconnection);
    DataSet objdataset1 = new DataSet();

    dabarber.Fill(objdataset1, "barber");
    قسمت رویداد

    DataView dv = objdataset1.Tables["barber"].DefaultView;
    dv.RowFilter = "visID=" + cboinvoicevisname.SelectedValue;
    cbobname.DataSource = dv;
    cbobname.DisplayMember="bname";
    cbobname.ValueMember = "bID";
    البته اینکار برای وقتی است که مطمئن باشید که در طول عملیات شما بانک تغییر نمی کند که اگر برنامه شما چند کاربره نباشد این اتفاق هیچ وقت نمیافتد

  7. #7
    کاربر دائمی
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    تهران
    پست
    130
    دوست عزیز و خوبم .کاملا" درست و این کد من بسیار سرعت گیره و dataview که نمایشی از dataset با سرعت بالایی جستجو رو انجام می ده.از راهنمایی شما ممنونم.

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

  1. باز کردن لیست Combo box بطور خودکار
    نوشته شده توسط سیلوستر در بخش VB.NET
    پاسخ: 2
    آخرین پست: دوشنبه 05 فروردین 1387, 13:18 عصر
  2. مشکل توی ساخت ocx از نوع combo
    نوشته شده توسط davood110 در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: یک شنبه 29 بهمن 1385, 13:56 عصر
  3. با زدن enter از یه combo به combo دیگر برویم
    نوشته شده توسط maryam_jamshid در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 01 خرداد 1385, 16:49 عصر
  4. Combo Box
    نوشته شده توسط habdolah در بخش طراحی وب (Web Design)
    پاسخ: 5
    آخرین پست: جمعه 25 فروردین 1385, 20:26 عصر
  5. چجوری لیست یک combo box رو با کد نویسی باز کنم؟
    نوشته شده توسط سیلوستر در بخش برنامه نویسی در 6 VB
    پاسخ: 10
    آخرین پست: سه شنبه 15 فروردین 1385, 05:35 صبح

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

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