View Full Version : کمبو باکس
essa_61
چهارشنبه 14 شهریور 1386, 17:30 عصر
من قبلا توی 2003 با کد زیر می تونسم به item توی کمبو باکس دسترسی داشته باشم ولی حلا برام کار نمی کنه
MessageBox.Show(cmd_name.Items[0].ToString()) ;
حالا توی مسج باس این رو میده
system.data.datarowview
چی کار کنم ؟؟
ضمنا کمبو باکس با این کد بایند شده
SqlConnection conn = newSqlConnection(cls_public.sqlpath);
SqlDataAdapter da = newSqlDataAdapter("SELECT family+' '+name AS name, id FROM tbl_CUSTOMER", conn);
DataSet ds_customer = newDataSet();
conn.Open();
da.Fill(ds_customer, "customer");
conn.Close();
cmd_name.DataSource = ds_customer.Tables[0];
cmd_name.DisplayMember = "name";
rasoul_ras
چهارشنبه 14 شهریور 1386, 17:39 عصر
من قبلا توی 2003 با کد زیر می تونسم به item توی کمبو باکس دسترسی داشته باشم ولی حلا برام کار نمی کنه
صد در صد اشتباه از جا دیگریست
چون فرقی نمی کنه
ببینم combo box رو با چی پر می کنی آن ایراد داره
essa_61
چهارشنبه 14 شهریور 1386, 19:34 عصر
نمیدونم از چی هست وقتی بایند نباشه کار میکنه للطفا به کد های بایند کردنم نگاه کنید
mehdisiavashian
چهارشنبه 21 شهریور 1386, 16:36 عصر
کسی مشکل رو نمی دونه کجاست؟ ظاهرا همه چیز درسته؟
gomnam
چهارشنبه 21 شهریور 1386, 22:36 عصر
کسی مشکل رو نمی دونه کجاست؟ ظاهرا همه چیز درسته؟
SqlConnection conn = newSqlConnection(cls_public.sqlpath);
SqlDataAdapter da = newSqlDataAdapter("SELECT family+' '+name AS name, id FROM tbl_CUSTOMER", conn);
DataSet ds_customer = newDataSet();
conn.Open();
da.Fill(ds_customer, "customer");
conn.Close();
cmd_name.DataSource = ds_customer.Tables[0];
cmd_name.DisplayMember = "name";
cmd_name.ValueMember = "name";
MessageBox.Show(cmd_name.SelectedValue.ToString()) ;
اگه نیاز داری که حتما توسط این کد
MessageBox.Show(cmd_name.Items[0].ToString()) ;
به داده هات دسترسی داشته باشی
comboBox را اینطوری پرش کن
SqlConnection conn = newSqlConnection(cls_public.sqlpath);
SqlDataAdapter da = newSqlDataAdapter("SELECT family+' '+name AS name, id FROM tbl_CUSTOMER", conn);
DataSet ds_customer = newDataSet();
da.Fill(ds, "customer");
int count = ds.Tables[0].DefaultView.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
comboBox1.Items.Add(ds.Tables[0].DefaultView[i]["name"].ToString());
}
comboBox1.SelectedIndex = 0;
}
نکته
1)برای خوندنداده ها نیاز نیست که که دستور con.Open() را بنویسی
پس در کدت 2 خط con.Open() و con.Close() زیادیه
2) جهت اقزایش performance بهتره که دستور sqlconnection را داخل بلاک using بنویسی
اینطوری
using (SqlConnection conn = newSqlConnection(cls_public.sqlpath))
{
SqlDataAdapter da = newSqlDataAdapter("SELECT family+' '+name AS name, id FROM tbl_CUSTOMER", conn);
DataSet ds_customer = newDataSet();
da.Fill(ds, "customer");
int count = ds.Tables[0].DefaultView.Count;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
comboBox1.Items.Add(ds.Tables[0].DefaultView[i]["name"].ToString());
}
comboBox1.SelectedIndex = 0;
}
}
بعد از پایان بلاک using فضای اختصاص داده شده یه con ازش گرفته میشه (اتوماتیک)
در مورد کاربر ها و مزایای دستور using هم توصیه میکنم مطالعه کنی
همچنین توی کد هات sqlInjection هست
شدیدا توصیه میکنم که از storedprocedure استفاده کنی
البته نکاتی که گفتم مربوط به مشکل شما نمیشد ولی چون گفتی به کدم نگاه کنید مجبور شدم که بگم
امیدوارم مفید بوده باشه
PC2st
پنج شنبه 22 شهریور 1386, 00:23 صبح
من قبلا توی 2003 با کد زیر می تونسم به item توی کمبو باکس دسترسی داشته باشم ولی حلا برام کار نمی کنه
MessageBox.Show(cmd_name.Items[0].ToString());
باید یک تبدیل نوع صورت بگیره...
اگر نوع فیلد name از نوع string باشه، بجای کد خودتون، از کد زیر استفاده کنید:
MessageBox.Show((string)((DataRowView)cmd_name.Ite ms[0])["name"]);
کد فوق، همان نتیجه ای رو میده که لازم دارید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.