View Full Version : سوال: پر نشدن ComboBox1 توسط ComboBox دیگر
  
bmvgod
سه شنبه 11 دی 1397, 17:30 عصر
باسلام خدمت تمامی دوستان
  من ComboBox ی دارم با نام cmbCommodityName که از جدول CommoTables  اطلاعات فیلد CommodName میخونه، که در صفحه لودم از کد زیر استفاده کردم:
private void frmSalesInvoices_Load(object sender, EventArgs e)
{            
    db = new LinqToTrazoDataContext();
    var list = db.CommoTables.ToList();
    cmbCommodityName.ValueMember = "RowCommo";
    cmbCommodityName.DisplayMember = "CommodName";
    cmbCommodityName.DataSource = list;
}
حالا میخوام با اتخاب یکی از گزینه های این ComboBox اطلاعات فیلد  CommodSize از همون جدول (CommoTables) و در ComboBox1 درج بشه، که از کد  زیر استفاده کردم:
private void cmbCommodityName_SelectedIndexChanged(object sender, EventArgs e)
{
  if (cmbCommodityName.SelectedIndex != -1)
  {
     var SizeCheng = from d in db.CommoTables
                     where d.CommodName == cmbCommodityName.SelectedText
                     select d;
     comboBox1.ValueMember = "RowCommo";
     comboBox1.DisplayMember = "CommodSize";
     comboBox1.DataSource = SizeCheng;
  }
}
ولی ComboBoX1  پر نمیشه، نمیدونم کجارو اشتباه کردم. میشه راهنماییم کنید که کدمو چجوری باید تغییر بدم تا ComboBox1 م پربشه؟
  ممنون میشم راهنماییم کنید.
  باتشکر
alexmcse
سه شنبه 11 دی 1397, 20:39 عصر
کدها رو به این صورت تغییر دهید
        private LinqToTrazoDataContext db;
        private void frmSalesInvoices_Load(object sender, EventArgs e)
        {
            db = new LinqToTrazoDataContext();
            var list = db.CommoTables.ToList();
            cmbCommodityName.DataSource = list; 
            //cmbCommodityName.ValueMember = "RowCommo";
            cmbCommodityName.DisplayMember = "CommodName";
            
        }
        private void cmbCommodityName_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbCommodityName.SelectedIndex != -1)
            {
                var SizeCheng = from d in db.CommoTables
                    where d.CommodName == cmbCommodityName.SelectedText
                    select d;
                comboBox1.DataSource = SizeCheng;
             //   comboBox1.ValueMember = "RowCommo";
                comboBox1.DisplayMember = "CommodSize";
            
            }
bmvgod
سه شنبه 11 دی 1397, 21:19 عصر
کدها رو به این صورت تغییر دهید
        private LinqToTrazoDataContext db;
        private void frmSalesInvoices_Load(object sender, EventArgs e)
        {
            db = new LinqToTrazoDataContext();
            var list = db.CommoTables.ToList();
            cmbCommodityName.DataSource = list; 
            //cmbCommodityName.ValueMember = "RowCommo";
            cmbCommodityName.DisplayMember = "CommodName";
            
        }
        private void cmbCommodityName_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbCommodityName.SelectedIndex != -1)
            {
                var SizeCheng = from d in db.CommoTables
                    where d.CommodName == cmbCommodityName.SelectedText
                    select d;
                comboBox1.DataSource = SizeCheng;
             //   comboBox1.ValueMember = "RowCommo";
                comboBox1.DisplayMember = "CommodSize";
            
            }
ممنون از راهنمایی تون.
تغیرات رو بصورتی ک گفتید پیاده کردم ولی نتیجه نگرفتم. نمی دونم ایراد کارم از کجاست؟
کد صفحه لودم کلا بصورت زیره:
private void frmSalesInvoices_Load(object sender, EventArgs e)
{
    db = new LinqToTrazoDataContext();
    var query = db.FactorSaleTables;
    dgvSalesInvoi.DataSource = query;
    txtSalesDate.Text = (PerCale.GetYear(DateTime.Now) + "/" + PerCale.GetMonth(DateTime.Now)
        + "/" + PerCale.GetDayOfMonth(DateTime.Now)).ToString();
    s = txtSalesDate.Text.Replace("/", string.Empty);
    t = s.Substring(2, 4);
    //txtCodFactor.Text = t+i
    var firstRecord = db.FactorSaleTables.Select(rf => rf.RowFact);
    if (firstRecord.Count() == 0)
        txtCodFactor.Text = t + 100;
    else
    {
        var lastRecord = db.FactorSaleTables.Select(fn => fn.FactorNo);
        txtCodFactor.Text = (lastRecord.Max() + 1).ToString();
    }                        
    var list = db.CommoTables.ToList();
    cmbCommodityName.DataSource = list;
    //cmbCommodityName.ValueMember = "RowCommo";
     cmbCommodityName.DisplayMember = "CommodName";
    txtSaleCodCommodity.DataBindings.Add("Text", list, "CommodCod");
    txtNameCO.DataBindings.Add("Text", list, "CompanyName");
    //txtNumber.DataBindings.Add("Text", list, "CommodNumb");
     //txtSize.DataBindings.Add("Text", list, "CommodWeight");
     txtSize.DataBindings.Add("Text", list, "CommodSize");
     txtUnitPrice.DataBindings.Add("Text", list, "UnitPrice");
     txtTax.DataBindings.Add("Text", list, "Tax");
     txtOff.DataBindings.Add("Text", list, "Dicount");
}
و کد ComboBox م کلا بصورت زیره:
private void cmbCommodityName_SelectedIndexChanged(object sender, EventArgs e)
{
    //txtNumber.Clear();
    if (cmbCommodityName.SelectedIndex != -1)
    {
        var SizeCheng = from d in db.CommoTables
                        where d.CommodName == cmbCommodityName.SelectedText
                        select d;
        comboBox1.DataSource = SizeCheng;
        //comboBox1.ValueMember = "RowCommo";
        comboBox1.DisplayMember = "CommodSize";                
    }
}
ممنون میشم راهنماییم کنید که ببینم ایراد کارم کجاست؟
باتشکر
alexmcse
جمعه 14 دی 1397, 19:44 عصر
مشکلت همون مشکل قبلی هست؟
کد رو تغییر ده به
   private void frmSalesInvoices_Load(object sender, EventArgs e)        {
            db = new LinqToTrazoDataContext();
            var query = db.FactorSaleTables;
            dgvSalesInvoi.DataSource = query;
            txtSalesDate.Text = (PerCale.GetYear(DateTime.Now) + "/" + PerCale.GetMonth(DateTime.Now)
                                 + "/" + PerCale.GetDayOfMonth(DateTime.Now)).ToString();
            s = txtSalesDate.Text.Replace("/", string.Empty);
            t = s.Substring(2, 4);
            //txtCodFactor.Text = t+i
            var firstRecord = query.Select(rf => rf.RowFact);
            if (firstRecord.Count() == 0)
                txtCodFactor.Text = t + 100;
            else
            {
                var lastRecord = query.Select(fn => fn.FactorNo);
                txtCodFactor.Text = (lastRecord.Max() + 1).ToString();
            }
            var list = db.CommoTables.ToList();
            cmbCommodityName.DataSource = list;
            //cmbCommodityName.ValueMember = "RowCommo";
            cmbCommodityName.DisplayMember = "CommodName";
            txtSaleCodCommodity.DataBindings.Add("Text", list, "CommodCod");
            txtNameCO.DataBindings.Add("Text", list, "CompanyName");
            //txtNumber.DataBindings.Add("Text", list, "CommodNumb");
            //txtSize.DataBindings.Add("Text", list, "CommodWeight");
            txtSize.DataBindings.Add("Text", list, "CommodSize");
            txtUnitPrice.DataBindings.Add("Text", list, "UnitPrice");
            txtTax.DataBindings.Add("Text", list, "Tax");
            txtOff.DataBindings.Add("Text", list, "Dicount");
        }
alexmcse
جمعه 14 دی 1397, 20:31 عصر
برنامه است تست کن
کوئری   فایل دیتابیس و جدول داخل فولدر است مسیر دیتابیس را دلخواه تغییر بده و در اس کیو ال ایجاد کن
کوئری دیتابیس بنام DBExampleو 
جدول TIn
bmvgod
شنبه 15 دی 1397, 23:28 عصر
برنامه است تست کن
کوئری   فایل دیتابیس و جدول داخل فولدر است مسیر دیتابیس را دلخواه تغییر بده و در اس کیو ال ایجاد کن
کوئری دیتابیس بنام DBExampleو 
جدول TIn
بسیار ممنون از لطفتون، برنامه درست کارکرد.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.