PDA

View Full Version : مشکل با combobox



samad1987
جمعه 21 تیر 1392, 16:24 عصر
با سلام من یه فرم دارم به شکل عکس زیر.. که میخوام وقتی combobox اول تغییر انتخاب داده شد تابعی که کدش رو قرار دادم اجرا بشه
کارش اینه که بیاد اون شماره های که مربوط به داده انتخاب شده combobox اولی هستش رو بریزه توی combobox دوم و در نهایت ایندکس انتخابی combobox دوم رو برابر 0 قرار بده ( به همین سادگی)

این تابع درست انجام میشه ولی
107091





comboBox3.Items.Clear();
SqlConnection c = new SqlConnection();
c.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + "\\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
try
{
c.Open();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand=new SqlCommand( "SELECT period_number FROM period WHERE (period_name = @period_name)", c);
sda.SelectCommand.Parameters.AddWithValue("@period_name", comboBox2.SelectedValue);
DataSet d = new DataSet();
sda.Fill(d, "cert");

int i;
for (i = 0; i < d.Tables["cert"].Rows.Count; i++)
comboBox3.Items.Add(d.Tables["cert"].Rows[i]["period_number"]);
comboBox3.SelectedIndex = 0;
buttonX2.Enabled = true;
c.Close();

}
catch
{
MessageBox.Show("ارتباط با پایگاه داده ها امکان پذیر نمی باشد .. لطفا مجددا تلاش نمایید ");
c.Close();
}



ولی موقعی که میخوام توی توابع دیگه از comboBox2.SelectedValue استفاده کنم null برمیگردونه !!!! کجای کارم اشتباهه به نظر شما؟؟
لطفا کمکم کنید

parvizwpf
جمعه 21 تیر 1392, 17:00 عصر
comboBox3.Items.Add(d.Tables["cert"].Rows[i]["period_number"]);

مشکل اینجاست شما با این کار داری فقط مقدار تکستهای یک کامبو رو مشخص میکنی و اصلا value ندارید.
بجای این کد بنویسید

ComboBox3.DataSource=d.Tables["cert"];
Combo3.DisplayMember="period_number;"
ComboBox3.ValueMember="id"

در بالا مثلا من value ها رو برابر فیلد آی دی شما در بانک قرار دادم اگرم اصلا فقط ایندکس انتخاب شده رو میخواید از selectedIndex استفاده کنید.

samad1987
جمعه 21 تیر 1392, 17:40 عصر
ممنون دوست عزیز
ولی این خط رو متوجه نشدم:ComboBox3.ValueMember="id"
این کارش چیه؟؟
فکر کنم منظورتون



comboBox3.ValueMember = "period_number";

باشه؟ نه؟

parvizwpf
جمعه 21 تیر 1392, 17:44 عصر
شما میتونید به اضافه اینکه مقداری متن آیتمهای کامبو رو مشخص کنید و به یک فیلد جدولتون بدید، از اون خاصیت هم بیایید و ولیوهایی به ازای هر آیتم مشخص کنید اونهم میتونه مقدار ها رو از یه فیلد جدولتون بخونه حالا میتونید از value ها استفاده کنید و مثلا با مقادیر داخل اونها بررسی کنید. چون شاید شما همیشه نخواید فقط با ایندکس کامبو کار کنید گاهی نیاز میشه به ازای متن نوشته شده ولیو خاصی رو هم متناظر با آیتم انتخاب شده نگه دارید.