PDA

View Full Version : سوال: نمایش تمار رکوردهای یک فیلد در combo box



atryad
شنبه 21 شهریور 1388, 05:19 صبح
سلام دوستان میخواستم ببینم چطور میشه اطلاعات موجود در یک فیلد رو درون یک کمبو بوکس نشان دارد (تمام اطلاعات یه فیلد رو)

من یه برنامه نوشتم که وقتی کاربر اسم مثلا شهری را به عنوان مثلا محل زندگی توی یه کمبو بوکس تایپ میکنه و ثبت میشه برای بار بعدی نخواد دوبباره همون نامو تایپ کنه و و تمام نامهایی رو که تایپ کرده توی کمبو نمایش داده بشن چیزی مثل مثلا آدرس بار همین مرورگرها که وقتی آدرسی رو توشون وارد میکنی برای بار بعد توش ثبت هست و نمیخواد دوباره کاملا ثبت کنی کافیه یکی دو حرف اولش رو تایپ کنی
من خودم یه روش نوشتم که برای هر کمبو بوکس(آخه چند تا کمبو بوکس رو فرم دارم) مجبور هست تمام دیتابیس رو از اول تا آخر رکوردها اسکن کنه و یکی یکی اونو به کمبو ADD کنه واین اگه دیتابیس بزرگ بشه باعت پایین اومدن سرعت میشه
ممنونم منو راهنمایی کنید
با تشکر

seniamail
شنبه 21 شهریور 1388, 07:27 صبح
من این کلاس رو برای همین منظور نوشتم


public class SeniaDB
{
public class DataBaseObject
{
public DataSet ds = new DataSet();
public DataTable dt = new DataTable();
public SqlCommandBuilder cb = new SqlCommandBuilder();
public SqlCommand sc = new SqlCommand();
public SqlConnection con = new SqlConnection("connection string");
public SqlDataAdapter da;
public DataRow dr;
public BindingSource bs;
}

public static BindingSource ComboBoxBind(string Query, string FieldName)
{
DataBaseObject DBO = new DataBaseObject();
try
{
DBO.con.Open();
DBO.da = new SqlDataAdapter(Query, DBO.con);
DBO.da.Fill(DBO.dt);
ComboBox cb = new ComboBox();
foreach (DataRow dataRow in DBO.dt.Rows)
{
cb.Items.Add(dataRow[FieldName].ToString());
}
DBO.bs = new BindingSource(cb, "Items");
DBO.con.Close();
return DBO.bs;
}
catch
{
DBO.con.Close();
return DBO.bs;
}
}
}

نحوه استفاده


comboBox1.DataSource = SeniaDB.ComboBoxBind("select name from t1", "name");

atryad
شنبه 21 شهریور 1388, 10:04 صبح
من این کلاس رو برای همین منظور نوشتم


public class SeniaDB
{
public class DataBaseObject
{
public DataSet ds = new DataSet();
public DataTable dt = new DataTable();
public SqlCommandBuilder cb = new SqlCommandBuilder();
public SqlCommand sc = new SqlCommand();
public SqlConnection con = new SqlConnection("connection string");
public SqlDataAdapter da;
public DataRow dr;
public BindingSource bs;
}

public static BindingSource ComboBoxBind(string Query, string FieldName)
{
DataBaseObject DBO = new DataBaseObject();
try
{
DBO.con.Open();
DBO.da = new SqlDataAdapter(Query, DBO.con);
DBO.da.Fill(DBO.dt);
ComboBox cb = new ComboBox();
foreach (DataRow dataRow in DBO.dt.Rows)
{
cb.Items.Add(dataRow[FieldName].ToString());
}
DBO.bs = new BindingSource(cb, "Items");
DBO.con.Close();
return DBO.bs;
}
catch
{
DBO.con.Close();
return DBO.bs;
}
}
}نحوه استفاده


comboBox1.DataSource = SeniaDB.ComboBoxBind("select name from t1", "name");

ممنون از راهنماییتون
اکه دستور select رو اینجور باز نویسی کنیم رکوردهای تکراری رو نشون نمی ده



select distinct name from T1"