PDA

View Full Version : ادغام 2 فیلد دیتابیس با هم و قرار دادن در یک comboBox



bazardeh
پنج شنبه 15 اردیبهشت 1390, 16:18 عصر
سلام
من در حال نوشتن یک برنامه مدرسه هستم و می خوام وقتی پرسنلی(معلم و مدیر و...) تعریف شد فیلد نام و نام خانوادگی که جدا تعریف کردم برای تعریف درس وارد یک comboBox کنم که کد یک فیلد رو فهمیدم

نام خانوادگی در پایگاه fname

http://up.vatandownload.com/images/c28o3zu24bzi1pwxluj.png



SqlCommand SqlCommand = new SqlCommand();

SqlCommand.Connection = new SqlConnection("server=(local);database=School;integrated security=true;");

SqlCommand.CommandType = CommandType.Text;

SqlCommand.CommandText = "SELECT fname,name FROM teacher";

DataTable DataTable = new DataTable();

SqlDataAdapter SqlDataAdapter = new SqlDataAdapter();

SqlDataAdapter.SelectCommand = SqlCommand;

SqlDataAdapter.Fill(DataTable);

comboBox2.DataSource = DataTable;

comboBox2.ValueMember = "fname";

comboBox2.DisplayMember = "fname";


ولی برای بهتر بودن و ایراد نگرفتم اساتید با این کار را انجام دهم لطفاً کمک کنید :چشمک:

bazardeh
پنج شنبه 15 اردیبهشت 1390, 17:33 عصر
آیا این موضوع امکان دارد ؟؟
آیا می توان 2 فیلد از پایگاه داده را با هم جمع کرد و در comboBox قرار داد یا نه از همان اول نام و نام خانوادگی را یک جا بگیرم ؟؟
لطفاً کمک کنید !!

bazardeh
پنج شنبه 15 اردیبهشت 1390, 17:35 عصر
آیا این موضوع امکان دارد ؟؟
آیا می توان 2 فیلد از پایگاه داده را با هم جمع کرد و در comboBox قرار داد یا نه از همان اول نام و نام خانوادگی را یک جا بگیرم ؟؟
لطفاً کمک کنید !!

exlord
پنج شنبه 15 اردیبهشت 1390, 18:41 عصر
public class ComboBoxItem
{
public string ID { get; set; }
public string Value { get; set; }

public ComboBoxItem(string id,string value)
{
this.ID = id;
this.Value = value;
}

public override string ToString()
{
return this.Value;
}
}

dt.Rows.Cast<DataRow>().ToList().ForEach(n => combobox1.Items.Add(new ComboBoxItem(n[0].ToString(), n[1].ToString() + " " + n[0].ToString())));

string id = (combobox1.SelectedItem as ComboBoxItem).ID;

majidrezaei2007
پنج شنبه 15 اردیبهشت 1390, 18:42 عصر
آره میشه
شما کافیه که 2 تا Select جدا از بانک بگیری و در دو متغیر رشته ای جداگانه بریزی
سپس آنها را ادغام کرده و داخل کمبو بریزید

bazardeh
پنج شنبه 15 اردیبهشت 1390, 18:44 عصر
اگر تعداد معلمین زیاد بود مشکل پیش نمیاد

bazardeh
پنج شنبه 15 اردیبهشت 1390, 18:48 عصر
با تشکر از به خاطر راهنمایی شون ممکنه روش کار این کد را توضیح بدهید


public class ComboBoxItem
{
public string ID { get; set; }
public string Value { get; set; }

public ComboBoxItem(string id,string value)
{
this.ID = id;
this.Value = value;
}

public override string ToString()
{
return this.Value;
}

bazardeh
پنج شنبه 15 اردیبهشت 1390, 18:51 عصر
آره میشه
شما کافیه که 2 تا Select جدا از بانک بگیری و در دو متغیر رشته ای جداگانه بریزی
سپس آنها را ادغام کرده و داخل کمبو بریزید

اگر تعداد معلمین زیاد بود مشکل پیش نمیاد

f4rib0rz
پنج شنبه 15 اردیبهشت 1390, 20:36 عصر
خب به عنوان مثال این دستور SELECT رو ببین

string sql = "SELECT name+' '+family as 'name',pid FROM person";
تو این کد فیلد NAME و FAMILY با هم جمع میشن و با نام مستعار NAME .
حالا بقیش رو که استادین دیگه مثلی که توی عکس گذاشتی عمل میکنی .
از نظر سرعت هم با اونی که الان داری انجام میدی ، یعنی فقط یه فیلد فرقی نداره
(فرق نداره نه اینکه انتخاب یه فیلد با انتخاب دوتا فیلد از یه جدول تو سرعت باهم فرق نکنه ...:لبخندساده:)
موفق باشی...

exlord
پنج شنبه 15 اردیبهشت 1390, 20:39 عصر
با تشکر از به خاطر راهنمایی شون ممکنه روش کار این کد را توضیح بدهید

ایتم های combobox از نوع Object هستند ... این یعنی اینکه شما هر کلاسی رو میتونید به عنوان آیتم بهش Add کنین ...
برای اینکه توی هر آیتم combobox چند تا value داشته باشین یه کلاس تعریف میکنیم و به تعداد مورد نیاز بهش property اضافه کنین ... و هر مقداری رو که میخواین توی combobox بهتون نشون بده توی متد ToString رترن کنین ... برای مثال :

public class ComboBoxItem
{
public string ID { get; set; }
public string fname { get; set; }
public string name { get; set; }

public ComboBoxItem(string id, string fname,string name)
{
this.ID = id;
this.fname = fname;
this.name = name;
}

public override string ToString()
{
return this.fname + " , " + name;
}
}

bazardeh
جمعه 16 اردیبهشت 1390, 15:24 عصر
با تشکر از آقای f4rib0rz و exlord مشکلم حل شد



SqlCommand.CommandText = "SELECT name+' '+fname as 'namefname' FROM teacher";