اولا تقوم بانشاء الاعمده بالضغط علي Edit Columans من DataGridView
Tasks كما موضع
بالشكل
ثم نقوم بالضغط علي Add من مربع الحوار الذي سيظهر امامك وكما موضح
بالشكل التالي نقوم بكتابه اسم العمود واختيار النوع "Type" DataGridViewComboBoxColumn
ثم نقوم بكتابه اسم العمود الذي
سيظهر للمستخدم
بعد الضغط علي Add
نقوم باختيار NoThing
من الخاصية DisplayStyle في Column Properties كما هو موضح بالشكل التالي :
بعد الضغط علي Ok , من DatagridView Properties نقوم باضافه الحدث EditingControlShowin بالضغط عليه بالماوس ليقوم بنقلنا الي الكود
وسيكون شكل الـ Event المحتوي للكود كالتالي :
private void
dataGridView1_EditingControlShowing(object
sender, DataGridViewEditingControlShowingEventArgs
e)
{
}
نقوم بالاعلان عن ComboBox قبل كتابه الكود وايضا استخدام المجال System.Data.SqlClient
ليكون شكل الكود في النهاية كالتالي :
----------------------------------------------------------------------------------------------------------------------------------------------------------------
using
System;
using
System.Data;
using
System.Data.SqlClient;
ComboBox DataGridProductCombo;
private
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs
e)
{
if (dataGridView1.CurrentCell.ColumnIndex ==
ColProduct.Index)
{
using (SqlConnection
MyConn = new SqlConnection(connString))
{
MyConn.Open();
SqlDataAdapter Adapter = new
SqlDataAdapter("if
exists( Select ProName From Products) Select ProName From Products else select
Null as ProName", MyConn);
Adapter.Fill(DatSet,
"Products");
MyConn.Close();
}
DataGridProductCombo = (ComboBox)e.Control;
DataGridProductCombo.DropDownStyle = ComboBoxStyle.DropDown;
DataGridProductCombo.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
DataGridProductCombo.AutoCompleteSource = AutoCompleteSource.ListItems;
DataGridProductCombo.DataSource = DatSet.Tables["Products"];
DataGridProductCombo.ValueMember = "ProName";
DataGridProductCombo.DisplayMember = "ProName";
}
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------
نقوم باضافه
الحدث CellValidating بنفس طريقة اضافه الحدث السابق EditingControlShowing
ثم نقوم بكتابه
الكود ليكون كالتالي
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs
e)
{
if (e.ColumnIndex == ColProduct.DisplayIndex)
{
if (!ColProduct.Items.Contains(e.FormattedValue))
{
ColProduct.Items.Add(e.FormattedValue);
}
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------
من المفترض ان تكون النتيجة كما بالشكل ادناه