PDA

View Full Version : SelectedItem برای combobox داخل datagridview



Mrs.Net
شنبه 24 فروردین 1387, 22:44 عصر
چجوری میتونم به مشخصه SelectedItem یک ستون از دیتاگرید که از نوع combobox هست یک فیلد بایند کنم؟
اگه combobox اما داخل دیتاگرید نبود اینکار میکردم:

cbSample.DataSource = samplelist;
cbSample.DisplayMember = "name";
cbSample.ValueMember = "code";
cbSample.DataBindings.Add(new Binding("SelectedItem", mainDataSource, "Sample"));

حالا تو دیتاگرید چجوری انجام بدم اینو؟

razavi_university
یک شنبه 25 فروردین 1387, 15:00 عصر
زمانی که dataTablی (فرضا) به عنوان DataSource به Datagridview بفرستید اگر فیلدی bit(bool) در table باشد خودکار به جای آن checkBox نمایش می دهد.
در DataGrid به کمک Column و Row میتوان به خانه مورد نظر دسترسی داشت
(و یا من دوباره سوال شما رو درست متوجه نشدم:چشمک:)

Mrs.Net
یک شنبه 25 فروردین 1387, 15:24 عصر
ممنون جناب رضوی

(و یا من دوباره سوال شما رو درست متوجه نشدم:چشمک:)دقیقا
خوب من دیتا سورس به دیتاگریدم وصل نکردم و حداقل اینکه از حالت ویزارد استفاده نمیکنم.
سوالم فقط مربوط به combobox میشه (نه checkbox) و فقط قسمت SelectedItem و نه هیچ قسمت دیگه ای.

razavi_university
یک شنبه 25 فروردین 1387, 23:44 عصر
یه نگاهی به این مثال بکن
تغییر یافته یکی از مثالهای سایت CodeProject است
نحوه کار با SelectedItem در ComboBoxی که در DataGrid است بهش اضافه کردم
موفق باشید

Mrs.Net
دوشنبه 26 فروردین 1387, 10:48 صبح
ممنون جناب رضوی. هرچی نگاه کردم نتونستم جایی که از SelectedItem استفاده شده پیدا کنم. میشه اون قسمت کد اینجا بگذارید؟
این برنامه ای که دادین یک کنترل جدید اونم از بیس DataGrid درست کرده که ساختارش پیچیده تر از ائنیه که تو برنامه ام استفاده کنم.
شاید راهی باشه که یکی از انواع ستونهای دیتاگریدویو override کرد و از اون طریق combobox پیشرفته ساخت

razavi_university
دوشنبه 26 فروردین 1387, 12:22 عصر
در فایل Form1.cs :

/Combobox selected index changed event.
private void cboSelectedIndexChanged(object sender, System.EventArgs e)
{
ds.Tables["myDT"].Rows[dataGrid.CurrentRowIndex]["ComboBox_Col"] =
cboControl.Text;
MessageBox.Show("Row:"+dataGrid.CurrentRowIndex.ToString()+"\n"+cboControl.Text);
}

من این برنامه رو از اول خودم ننوشتم(گفتم که تغییر یافته مثال CodeProject) بلکه قسمتی که مد نظر شما بود رو بهش اضافه کردم
اگر مشکلی بود بفرمایید تا یک مثال ساده تر ضمیمه کنم

Mrs.Net
دوشنبه 26 فروردین 1387, 13:17 عصر
این SelectedIndex استفاده کرده ولی من SelectedItem میخوام که آبجکت برمیگردونه

razavi_university
سه شنبه 27 فروردین 1387, 17:47 عصر
این مثال به ComboBox یک ستون از جدولی که در برنامه ساخته شده بایند می‌شود

Mahdi.Kiani
سه شنبه 27 فروردین 1387, 20:26 عصر
از رویدا EditingControlShowing استفاده کنید
موفق باشید

Mahdi.Kiani
پنج شنبه 29 فروردین 1387, 00:08 صبح
نمی دونم جواب سوالتون را گرفتین یا دنبال اون رویداد که در پست قبلی اشاره کردم، رفتین یا نه؟
به هر حال این کدهی مشکلتو ن را حل می کنه..
اگه متوجه نشدین تایه نمونه برنامه آپ کنم





private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
{

ComboBox cbo = e.Control as ComboBox;
cbo.SelectionChangeCommitted -= cbo_SelectionChangeCommitted;
cbo.SelectionChangeCommitted += cbo_SelectionChangeCommitted;


}
}

void cbo_SelectionChangeCommitted(object sender, EventArgs e)
{
ComboBox senderItem = sender as ComboBox;
if (senderItem != null && senderItem.SelectedValue != null && senderItem.SelectedValue.ToString().Trim() != "System.Data.DataRowView")
{
dataGridView1.CurrentRow.Cells[1].Value = String.Format("Current Student Id is ' {0} ' and current student Name is ' {1} '", senderItem.SelectedValue, senderItem.Text);


}

}




موفق باشید

Mrs.Net
شنبه 31 فروردین 1387, 20:50 عصر
نه این کد هم جواب نداد :(
من یک آبجکت به کمبو باکس میخوام بایند کنم نه یک مقدار از یک فیلد

niloofar_f
شنبه 02 آبان 1394, 22:11 عصر
سلام دوستان
چطور میتونم مقدار پیش فرض برای کمبوباکس داخل دیتاگرید تعریف کنم؟
مثلا مقدار اولیه هر ردیف برابر با مقدار ستون 2 از آن ردیف باشه! لطفا راهنماییم کنین!

niloofar_f
دوشنبه 04 آبان 1394, 21:39 عصر
من در یک دیتاگریدویو، یک DataGridViewComboBoxColumn اضافه کردم و میخوام در هر ردیف مقدار اولیه مورد نظرم در کمبوباکس نمایش داده بشه

مثل شکل زیر میخوام مقدار ستون 2 از هر سطر در ستون 1 نمایش داده بشه که از کد زیر استفاده کردم ولی همانطور که میبینید مقادیر جابجا افتاده!


136286



int len = 0;

private void GridDPlan1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)//where Column1 is your combobox column
{
if (len < data.Length)
{
e.Value = data[len];
e.FormattingApplied = true;
}
len++;
}
}