PDA

View Full Version : سوال: ایجاد رویداد SelectedChange برای comboBox در datagridview



Me3ter
سه شنبه 21 شهریور 1391, 19:24 عصر
سلام
یک گرید داخل فرم برنامه دارم که یک ستونش از نوع کمبوست حالا می خوام هربار که مقدار این کمبو تغییر می کنه مقدار داخلش گرفته بشه و توی رویداد combobox_selectedindexchanged اون مقدارو ببرم داخل یک کویری و اطلاعات مربوط به او مقداری که از کمبو گرفتم رو بدست بیارم و تویگرید نمایش بدم من شماره تلفن هارو توی کمبو ذخیره کردم میخوام هر شماره که انتخاب میشه از دیبی چک بشه که اگه فیلد اس ام اس شماره ترو بود تو گرید فیلد اس ام اس چک بشه حالا اومدم با چیزایی که خودم بلد بودم چزایی که تو
نت پیدا کردم اینو نوشتم دوستان راهنمایی کنن به نتیجه برسم کدهارو میزارم
این کویری که مقدار مقدار داخل کمبورو از دیبی چک میکنه
public DataTable chksmscmbnum(string number,decimal personid)
{
return database.GetDataTable("select sms from tblnumber where number='"+number+"' and personid="+personid);
}
اینم کد رویدادیه که ایجاد کردم
dgv.EditingControlShowing+=new DataGridViewEditingControlShowingEventHandler(dgv_ EditingControlShowing);
private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dgv.CurrentCell.ColumnIndex == number.Index&& e.Control is ComboBox)
{
ComboBox comboBox = e.Control as ComboBox;
comboBox.SelectedIndexChanged+=new EventHandler(comboBox_SelectedIndexChanged);
}
}
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox cb = (ComboBox)sender;
if(cb != null)
{
string num = number.Selected.ToString();//number gridcombobox e
var row = new ntt().chksmscmbnum(num, currentpersonid).Rows[0];
chk = row["sms"] + "";
if (chk == "1")
dgv.CurrentRow.Cells[5].Value = true;//سل 5 از نوع چک باکسه
else
dgv.CurrentRow.Cells[5].Value = false;

}

matin.soft
سه شنبه 21 شهریور 1391, 21:25 عصر
دوست عزیز حلال کجا مشکل داری؟آیا کدی که نوشتی ایراد داره؟

Me3ter
چهارشنبه 22 شهریور 1391, 01:10 صبح
دوست عزیز حلال کجا مشکل داری؟آیا کدی که نوشتی ایراد داره؟
سلام مقدار رو از کمبو باکس نمیگیره یعنی چیزی که سلکت می کنم ذخیره نمیکنه با این کد
string num = number.Selected.ToString()

البته راهای دیگه هم امتحان کردم نشد مثلdgv.currentrow.cell[3].value.tostring();
یا dgv.currencell.value.tostring();

یه چیز دیگه هم که هست اینه که سطونی که کمبو توشه جزو ایندکس سل یا کلوم نیست
سطون های گرید به این شکلن
id index=1,name index=2,lname index=3 ,number,group index=4,sms index=5
تکمبو جزو ایندکسها نیس

Me3ter
چهارشنبه 22 شهریور 1391, 01:37 صبح
کسی نیست بدونه چطور مقدار کمبو باکس تو گریدو ذخیره کنم داخل یه متغیر؟

Me3ter
چهارشنبه 22 شهریور 1391, 02:20 صبح
همونطور که گفتم && e.Control is ComboBox را از شرط حذف کن.
برای مقدار هم میتونی value را بخونی شبیه سلول های متنی ، فرقی نداره.
برای اندیس ستون کمبو میتونی از نام ستون به جای اندیس استفاده کنی.
دوست عزیز این کارو انجام دادم به این صورت
string num = number.Selected.ToString();
ولی خب این نیست چون باید number.seledteditem.tostring() باشه ولی نداره این گزینرو من عکس میزا92755رم ببنید

Me3ter
چهارشنبه 22 شهریور 1391, 03:33 صبح
ای بابا یکی یاری برسونه

Me3ter
چهارشنبه 22 شهریور 1391, 07:38 صبح
اگر number ستون کمبوباکس هست، بله چنین چیزی نداره اما توجه کنید که همه این کارها رو انجام دادید و حتی sender را به کمبوباکس cast کردید پس باید از اون استفاده کنید پس مقدار num را به این صورت اصلاح کنیدstring num = cb.SelectedItem.ToString();
سلام من این کارو کردم ولی به جای اینکه مقدار سلکت شده رو بزاره داخل نام این رو میزاره System.Data.DataRowView

Me3ter
چهارشنبه 22 شهریور 1391, 08:59 صبح
این روشهایی که گفتید واسه زمانیه که کمبو ایتماش داخال کالکشن استرینگ ادد شده باشه ولی من کمبو باکسم از دیبی مقدار میگیره ایتماش داخال کالکشن استرینگ ادد نشده لطفا راهنمایی کنید که چه طور وقتی از دیبی ایتم میگیره مقدارشو چه طور ذخیره کنیم

Mahmoud.Afrad
چهارشنبه 22 شهریور 1391, 11:34 صبح
string num = (cb.SelectedItem as DataRowView).Row["name"].ToString();
به جای name نام فیلدی که به کمبو بایند کردی را بذار.

یا

string num = cb.Text;

Me3ter
چهارشنبه 22 شهریور 1391, 19:18 عصر
مرسی مشکل با

string num = (cb.SelectedItem as DataRowView).Row["name"].ToString();
به پایان رسید

Me3ter
پنج شنبه 23 شهریور 1391, 00:24 صبح
کسی دلیل این ارور رو میدونه عکس پیوست میکنم
(وقتی مقدار سطون کمبو رو سلکت میکنم وقتی میخوام مقدار کمبو یک سطر دیگرو سلکت کنم این اررور رو میده)92795