PDA

View Full Version : خطا bind کردن اطالاعات به combpbox



nafarinesh
شنبه 08 بهمن 1390, 19:01 عصر
وقتی برنامه رو اجرا میکنم به combotechernames.ValueMember = "teacherid" این error رو میده

Cannot bind to the new display member.
Parameter name: newDisplayMember
:متفکر:
رویداد dropdown کامبو باکس


private void comboteacher_DropDown(object sender, EventArgs e)
{
classes.teachercourse teachercourse = new classes.teachercourse();

System.Data.DataSet dataset = teachercourse.fillcombotch();
combotechernames.DataSource = dataset;
combotechernames.DataSource = dataset;
combotechernames.DisplayMember = "lname";
combotechernames.ValueMember = "teacherid";


}




اینم متود fill تو کلاس


public System.Data.DataSet fillcombotch()
{
System.Data.DataSet dataset = new System.Data.DataSet();
using (SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog= ASATIR;Integrated Security=True"))
{
SqlDataAdapter myadapter = new SqlDataAdapter();

SqlCommand command = new SqlCommand("select teacherid , lname from teacher", connection);



//--open connection
if (connection.State != System.Data.ConnectionState.Open)
{
connection.Open();
}

myadapter.SelectCommand = command;

myadapter.Fill(dataset, "teacher");


if (connection.State != System.Data.ConnectionState.Closed)
{
connection.Close();
}
if (command != null)
{
command.Dispose();
}


}
return dataset;
}

shadi khanum
شنبه 08 بهمن 1390, 22:25 عصر
چرا شما تو DropDown کد بایند کردن رو نوشتین؟ اینجوری هربار که کمبو باز میشه میره اطلاعات رو بایند میکنه. بهتره که اینکار یه بار و اون هم موقع لود شدن فرم انجام بشه
موفق باشی

nafarinesh
یک شنبه 09 بهمن 1390, 08:37 صبح
این کارو در ابتدا کردم
ولی تو کامبوباکس این رو مینویسه
System.Data.DataViewManagerListItemTypeDescriptor

اطلاعات رو نشون نمیده

nafarinesh
یک شنبه 09 بهمن 1390, 12:43 عصر
کسی نمیتونه مشکل من برطرف کنه؟

AliSaeedi_v
یک شنبه 09 بهمن 1390, 13:11 عصر
سلام شماDataSource رو دیتا ست گذاشتین.باید مشخص کنید کدوم جدول از دیتاست.بهتره تو فرم لود بنویسین.موفق باشین

parvizwpf
یک شنبه 09 بهمن 1390, 13:11 عصر
کلاسو static تعریف کن بببین چیه

armin72
یک شنبه 09 بهمن 1390, 13:13 عصر
من این کاری که شما میخواید بکنید رو قبلا انجام دادم که کدش رو اینجا میذارم . به نظرم مشکل شما توی دریافت اطلاعات از دیتابیسه

اول از همه به جای کد نوشتن . خود combobox با استفاده از ویزارد راحت هر چی رو بخواید بیند میکنه ولی اگه میخواید


SqlConnection con = new SqlConnection();
con.ConnectionString = cstr;
SqlCommand =new SqlCommand();
cmd.Connection = con;
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
DataSet ds =new DataSet();
con.Open();
cmd.CommandText = "select name from tbl_teacher";
dt.Clear();
da.Fill(dt);
con.Close();

این برای دیتابیس

این هم اونت دراپ داون :

comboBox1.Items.Clear();

for (int i = 0; i < dt.Rows.Count; i++)
{
comboBox1.Items.Add(dt.Rows[i]["name"]);


}

m_gholami
یک شنبه 09 بهمن 1390, 13:24 عصر
سلام



comboBox1.DataSource = dtSex;
comboBox1.DisplayMember = "sexFa";
comboBox1.ValueMember = "sexCode";





من به اینصورت کار میکنم.
dtSex هم یک دیتاتیبل هست.



یک سوال: من میخام تعداد 18000 رکورد رو به کمبوباکس بایند کنم. که برنامم خیلی کند میشه وسرعت هم برام خیلی مهمه و تمام 18000 رکورد رو هم لازم دارم.
چکار میتونم بکنم که در نهایت سرعت بتونم این 18000 رکورد را سریعتر بایند کنم
با تشکر

parvizwpf
یک شنبه 09 بهمن 1390, 13:29 عصر
نمیتونی فیلتر کنی

shadi khanum
یک شنبه 09 بهمن 1390, 20:08 عصر
دوست من بایند کردن روش خاصی نداره.. اگه همه 18000 تا رو میخوای و میخوای همه رو تو کمبو نشون بدی مجبوری اون کالکشنی که داری رو به کمبوتون بایند کنید دیگه.. کار دیگه ای نمیتونید انجام بدید فک کنم... واقعا مجبوری همه 18000 رکورد رو به یه کمبو بایند کنی؟

m_gholami
دوشنبه 10 بهمن 1390, 08:42 صبح
با سلام

بله باید همه 18000 تا رکورد رو تو کمبوباکس ببینم چون کاربرم هر لحظه ممکنه به یکی از این رکوردها بخاد دسترسی داشته باشه.