PDA

View Full Version : دسترسی به مقادیر ستونی از نوع کمبو در دیتاگریدویو



elahe1364
سه شنبه 22 اردیبهشت 1388, 23:14 عصر
سلام دوستان
میدونم در این مورد زیاد بحث شده ولی من به نتیجه ای نرسیدم
ببینید من یک datagridview دارم که یکی از ستون هاش رو از نوع COMBOBOX ایجاد کردم و به یک استورپروسیجر هم بایند کردم
ولی الان نمیدونم چه جوری میتونم به selectedvalue و selected text این کمبو دسترسی داشته باشم؟

hsmfaridmehr
سه شنبه 22 اردیبهشت 1388, 23:20 عصر
خوب از خصوصیت Value اون سلول استفاده کن



dataGridView1.Rows[2].Cells["comboBox"].Value.ToString();

elahe1364
سه شنبه 22 اردیبهشت 1388, 23:27 عصر
وقتی من مستقیما داخل value این سلول یک مقدار بریزم خطا میده
فرض کنید بخوام یکی از مقادیر بایند شده در کمبو رو به عنوان selectedindex انتخاب کنم
اینجوری نمیشه

hsmfaridmehr
چهارشنبه 23 اردیبهشت 1388, 20:09 عصر
خوب از این استفاده کن



DataGridViewComboBoxCell c = (DataGridViewComboBoxCell)dataGridView1.Rows[0].Cells[0];
dataGridView1.Rows[0].Cells[0].Value = c.Items[4];

elahe1364
یک شنبه 27 اردیبهشت 1388, 20:04 عصر
ببخشید من چند وقت نتونستم بیام

ممنون دوست عزیز
ببینید فرض کنید من میخوام عنصر چهارم داخل کمبو ی گرید select بشه یه چیزی مثل

combobox1.selectedindex=3;
که برای شیء کمبو استفاده میشه.

ولی من وقتی با این روشی که شما گفتید داده داخل این سلول گرید میریزم خطا میده!!؟

adinochestva
یک شنبه 27 اردیبهشت 1388, 20:39 عصر
try :



(dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).SelectedIndex = 3

elahe1364
دوشنبه 28 اردیبهشت 1388, 19:07 عصر
مساله اینه که این کمبو نه selectedindex داره نه selectedvalue نه selectedtext
من به این خصوصیتا نیاز دارم

hsmfaridmehr
دوشنبه 28 اردیبهشت 1388, 19:20 عصر
ولی من وقتی با این روشی که شما گفتید داده داخل این سلول گرید میریزم خطا میده!!؟


روشی که من گفتم جواب میده توی برنامه ی خودم .شاید اشتباه مینویسی

zahra111
دوشنبه 28 اردیبهشت 1388, 20:00 عصر
try :



(dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell).SelectedIndex = 3



لطفا خودتون این کد روتست کنید . اصلا خاصیتی به اسم SelectedIndex نداره.

adinochestva
دوشنبه 28 اردیبهشت 1388, 20:12 عصر
DataGridViewCell كه توسط DataGridView.Rows[0].Cell[0] به دست مياد قابل box يا cast نه تنها به DataGridViewComboBoxColumn نست حتي به Control هم نميشه cast كرد !

به هرحال چون يه مقدار غامض شده بود كلي زمان برد ولي يك چيزي در آوردم ! ( تو stackoverflow ,eggheadcafe , ... چيزي پيدا نميشه ! )

همچين چيزي شد



public Form1()
{
InitializeComponent();
this.dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(Hand leEditingControlShowing);
}



private int selectedIndexValue = 0;
void HandleEditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
ComboBox cbx = (ComboBox)e.Control;
cbx.SelectedIndex = selectedIndexValue;
}
}

private delegate void SetCurrentCell(int i);

private SetCurrentCell foo;

private void Form1_Click(object sender, EventArgs e)
{
selectedIndexValue = 1;
foo = fooexe;
dataGridView1.BeginInvoke(foo, 1);
}
void fooexe(int i)
{
dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[i];
dataGridView1.BeginEdit(true);
}



يعني به وسيله اين كد


selectedIndexValue = 1;
foo = fooexe;
dataGridView1.BeginInvoke(foo, 1);


كه selectedItem كه مي خوايم باشه رو در selectedIndexValue ميريزيم و ايندكس cell رو يه جاري يك در dataGridView1.BeginInvoke(foo, 1); مي زاريم مي تونيم SelectedIndex رو تغيير بديم !