PDA

View Full Version : مبتدی: مقدار گرفتن کامبو باکس



vahid.kh
یک شنبه 31 اردیبهشت 1391, 00:14 صبح
2 تا کامبو باکس دارم که دومی بر اساس گزینه انتخاب شده در کامبو اول از db مقدار میگیره.بر اساس کدی که نوشتم وقتی گزینه اول رو در کامبو باکس اول ( need ) انتخاب میکنم.کامبو باکس دوم (Type ) مقدار میگیره.ولی وقتی گزینه دوم رو در کامبو باکس اول انتخاب میکنم و یا هر گزینه ای به جز اولین گزینه با پیغامی شبیه این مواجه میشم.اشکال کار کجاست.

Cannot bind to the new value member.
Parameter name: value

این هم کد:

private void CmbNeed_SelectedIndexChanged(object sender, EventArgs e)
{
Cost mycost = new Cost();
DataTable dttype = new DataTable();
switch (Convert.ToInt32(CmbNeed.SelectedValue))
{
case 1:

dttype = mycost.getFood();
CmbTypeNeed.ValueMember = "FoodId";
CmbTypeNeed.DisplayMember = "FoodType";
CmbTypeNeed.DataSource = dttype;
break;
case 2:

dttype = mycost.GetCloth();
CmbTypeNeed.ValueMember = "ClothId";
CmbTypeNeed.DisplayMember = "ClothType";
CmbTypeNeed.DataSource = dttype;
break;
case 3:

dttype = mycost.GetHousing();
CmbTypeNeed.ValueMember = "HousingId";
CmbTypeNeed.DisplayMember = "HousingCost";
CmbTypeNeed.DataSource = dttype;
break;
case 4:

dttype = mycost.GetSport();
CmbTypeNeed.ValueMember = "SportId";
CmbTypeNeed.DisplayMember = "SportCost";
CmbTypeNeed.DataSource = dttype;
break;
case 5:

dttype = mycost.GetEducation();
CmbTypeNeed.ValueMember = "EducationId";
CmbTypeNeed.DisplayMember = "EducationCost";
CmbTypeNeed.DataSource = dttype;
break;
case 6:

dttype = mycost.GetRecreate();
CmbTypeNeed.ValueMember = "RecreateId";
CmbTypeNeed.DisplayMember = "RecreateType";
CmbTypeNeed.DataSource = dttype;
break;
case 7:

dttype = mycost.GetHealth();
CmbTypeNeed.ValueMember = "HealthId";
CmbTypeNeed.DisplayMember = "HealthCost";
CmbTypeNeed.DataSource = dttype;
break;
case 8:

dttype = mycost.GetManual();
CmbTypeNeed.ValueMember = "ManualId";
CmbTypeNeed.DisplayMember = "ManualCost";
CmbTypeNeed.DataSource = dttype;
break;
}
}

vahid.kh
یک شنبه 31 اردیبهشت 1391, 00:18 صبح
این هم تصویر مشکل من

87248

Ghaem66
یک شنبه 31 اردیبهشت 1391, 11:51 صبح
دوست عزيز. اگه هدف شما پر كردن كامبو دوم با استفاده از مقدار كامبو اول هست، ميتونين از روش زير استفاده كنين:
اول يه كلاس تعريف كنين.
كد كلاس :



class c_connection2
{
static public SqlConnection objconnection = new SqlConnection();
static public SqlCommand objcommand = new SqlCommand();
static public SqlDataReader objreader;

static public void CreatConnection()
{
objconnection.Close();
objconnection.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBproductes.mdf;Integrated Security=True;User Instance=True";
objconnection.Open();
objcommand.Connection = objconnection;
}
}


بعد تو رويداد selectindexchange كامبو اول اين دستورات رو بنويسيد:



cmb2.Items.Clear();
c_connection2.CreatConnection();
c_connection2.objcommand.CommandText = "select MyItem2 from MyTable where MyItem1 = '" + cmb1.Text + "'";
c_connection2.objreader = c_connection2.objcommand.ExecuteReader();
while (c_connection2.objreader.Read())
{
cmb2.Items.Add(c_connection2.objreader["MyItem2"].ToString());
}
c_connection2.objconnection.Close();

hamed_hossani
یک شنبه 31 اردیبهشت 1391, 12:58 عصر
comboProfession کمبو باکسی برای نشان دادن حرفه ها که کاربر انتخاب کنه!
comboProfession.DataSource = tmpWork3;
comboProfession.DisplayMember = tmpWork3.Columns[0].ToString();
comboProfession.ValueMember = tmpWork3.Columns[1].ToString();
tmpWork3 یک دیتا تیبل است که دو ستون داره
ستون اول اسم حرفه ها ست
ستون دوم کد حرفه هاست
که قبلا با کوری sql تو دیتاتبیل ریختمشون