PDA

View Full Version : اضافه کردن عنصر خالی در comboBox



kiani2012
جمعه 18 فروردین 1396, 17:03 عصر
سلام
من در پروژه ام در هر فرم چندین comboBox دارم که با کد اونها رو از دیتابیس بایند کردم
الان میخوام یه گزینه ای مثل "انتخاب کنید" بهشون اضافه کنم
1- بهترین راه برای این کار چیه؟
2- اگر کاربر comboBox رو روی گزینه پیش فرض یعنی "انتخاب کنید" بزاره و دکمه ثبت بزنه راهی جز اینکه زمان ثبت تک تک comboboxها رو چک کنم و اگر "انتخاب کنید" بود اون فیلد رو خالی ثبت کنم راه بهتری هست؟

Mahmoud.Afrad
جمعه 18 فروردین 1396, 21:38 عصر
در کوئری دریافت اطلاعات میتونید گزینه "انتخاب کنید" را اضافه کنید. کد قرار بدید.
کد ثبت رو هم قرار بدید.

kiani2012
شنبه 19 فروردین 1396, 16:41 عصر
در کوئری دریافت اطلاعات میتونید گزینه "انتخاب کنید" را اضافه کنید. کد قرار بدید.
کد ثبت رو هم قرار بدید.

SqlDataAdapter daa = new SqlDataAdapter("select Model from Models where Brand='"+comboBox3.Text+"' and [Name]=N'antenna'", cn.getcn());
DataTable dss = new DataTable();
daa.Fill(dss);
comboBox4.DataSource = dss;
comboBox4.DisplayMember = "Model";

کد ثبت:
SqlCommand cm3 = new SqlCommand("insert into antena values (@N,@D,@a,@cn,@b,@c,@o,@e)", cn.getcn());
cm3.Parameters.Add("@N", SqlDbType.VarChar).Value = textBox2.Text;
cm3.Parameters.Add("@D", SqlDbType.NVarChar).Value = maskedTextBox2.Text;
cm3.Parameters.Add("@a", SqlDbType.NVarChar).Value = comboBox3.Text;
cm3.Parameters.Add("@cn", SqlDbType.VarChar).Value = comboBox4.Text;
cm3.Parameters.Add("@b", SqlDbType.VarChar).Value = persianDateTimePicker1.Value.ToString();
cm3.Parameters.Add("@c", SqlDbType.VarChar).Value = comboBox1.SelectedValue.ToString();
cm3.Parameters.Add("@o", SqlDbType.VarChar).Value = comboBox2.SelectedValue.ToString();
cm3.Parameters.Add("@e", SqlDbType.SmallInt).Value = 1;
cm3.Connection.Open();
cm3.ExecuteNonQuery();
cn.getcn().Close();
MessageBox.Show("رکورد اضافه شد");

kiani2012
شنبه 19 فروردین 1396, 17:41 عصر
اگر با استفاده از Use data Bind item به جدولی متصل کرده باشیم برای این مشکل باید چکار کرد؟

Mahmoud.Afrad
شنبه 19 فروردین 1396, 20:49 عصر
بعد از fill کردن دیتاتیبل میتونید یک سطر به ابتدای اون اضافه کنید
daa.Fill(dss);
DataRow firstRow = dss.NewRow();
firstRow["Model"] = "انتخاب کنید...";
dss.Rows.InsertAt(firstRow, 0);


یک نکته ای هم که در کدهاتون دیدم این هست که دیتابیستون نرمال نیست. شما وقتی جدولی برای مدلها دارید، نباید نام مدل رو در جدولهای دیگر (antena) ذخیره کنید بلکه باید کد مدل رو ذخیره کنید. برای این کار نیاز دارید علاوه بر نام مدل، کلیداصلی جدول مدل رو هم سلکت کنید و در هنگام ذخیره SelectedValue کمبو4 رو ذخیره کنید.

kiani2012
یک شنبه 20 فروردین 1396, 17:06 عصر
بعد از fill کردن دیتاتیبل میتونید یک سطر به ابتدای اون اضافه کنید
daa.Fill(dss);
DataRow firstRow = dss.NewRow();
firstRow["Model"] = "انتخاب کنید...";
dss.Rows.InsertAt(firstRow, 0);


یک نکته ای هم که در کدهاتون دیدم این هست که دیتابیستون نرمال نیست. شما وقتی جدولی برای مدلها دارید، نباید نام مدل رو در جدولهای دیگر (antena) ذخیره کنید بلکه باید کد مدل رو ذخیره کنید. برای این کار نیاز دارید علاوه بر نام مدل، کلیداصلی جدول مدل رو هم سلکت کنید و در هنگام ذخیره SelectedValue کمبو4 رو ذخیره کنید.


اگر با استفاده از Use data Bind item کمبوباکس رو به جدولی متصل کرده باشیم برای این مشکل باید چکار کرد؟

Mahmoud.Afrad
یک شنبه 20 فروردین 1396, 23:29 عصر
کد databind رو بزارید.

kiani2012
دوشنبه 21 فروردین 1396, 17:18 عصر
کد databind رو بزارید.

منظورم اینه که بر روی فلش کوچک کنار کمبو کلیک کردم و به صورت ویزارد به جدول متصل کردم

Mahmoud.Afrad
دوشنبه 21 فروردین 1396, 22:41 عصر
در اینصورت یک تکه کد به رویداد فرم لود اضافه میشه که یک دیتاتیبل یا دیتاست رو پر میکنه که میتونید یک سطر بهش اضافه کنید.

kiani2012
سه شنبه 22 فروردین 1396, 08:28 صبح
در اینصورت یک تکه کد به رویداد فرم لود اضافه میشه که یک دیتاتیبل یا دیتاست رو پر میکنه که میتونید یک سطر بهش اضافه کنید.


سلام توی Form_load فقط این رو براش نوشته
چطور میشه سطری بهش اضافه کرد؟

this.countyTableAdapter.Fill(this.hwInfoDBDataSet. county);

Mahmoud.Afrad
سه شنبه 22 فروردین 1396, 10:54 صبح
این یک مثال. براساس دیتاست خودتون کد را اصلاح کنید
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.Person' table. You can move, or remove it, as needed.
this.personTableAdapter.Fill(this.dataSet1.Person) ;
DataSet1.PersonRow row = dataSet1.Person.NewPersonRow();
row.FirstName = "انتخاب کنید";
dataSet1.Person.Rows.InsertAt(row , 0);
}

kiani2012
سه شنبه 22 فروردین 1396, 14:21 عصر
این یک مثال. براساس دیتاست خودتون کد را اصلاح کنید
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.Person' table. You can move, or remove it, as needed.
this.personTableAdapter.Fill(this.dataSet1.Person) ;
DataSet1.PersonRow row = dataSet1.Person.NewPersonRow();
row.FirstName = "انتخاب کنید";
dataSet1.Person.Rows.InsertAt(row , 0);
}


ممنون درست شد.

kiani2012
پنج شنبه 24 فروردین 1396, 15:52 عصر
اگر کاربر comboBox رو روی گزینه پیش فرض یعنی "انتخاب کنید" بزاره و دکمه ثبت بزنه راهی جز اینکه زمان ثبت تک تک comboboxها رو چک کنم و اگر "انتخاب کنید" بود اون فیلد رو خالی ثبت کنم راه بهتری هست؟