و بإذن الله هكذا نكون قد انهينا كلاس تعبئة الداتا غريد فيو مع الكومبو الموجود فيه ليعمل على أي جدول والحمد الله رب العالمين على ذلك .
انا بشكرك بجد على مجهودك معايا
واسف انى تعبتك
بس ليا طلب لو تكرمت
الداتا فيو عندي ليها وضع معين لاستدعاء البيانات حيث ان البيانات بتكون من اكثر من جدول وليس جدول واحد والكود بتاع حضرتك مش قادر اتحكم في طريقه عرض البيانات كما ااريد ولذلك
يريت تفصل بين تعبئه الكمبو بوكس والداتا فيو
اتمنى تعديل الكود ليكون خاص لتعبئه الكمبو بوكس داخل الداتا فيو فقط
اما عن استدعاء بيانات الداتا فيو عندي كلاس خاص بتعبئه الداتا فيو بالطريقه التى اريدها
اتمنى مكونش تعبتك
12-07-19, 02:16 PM (آخر تعديل لهذه المشاركة : 12-07-19, 06:59 PM {2} بواسطة asemshahen5.)
تعبئة الداتا غريد متلها متل اي تعبئة وضعه المعين كيف تسمية عناوين الجدول اسهل حاجة :
PHP كود :
dataGridView1.Columns[0].HeaderText = "Test";
أو عن طريق الاستعلام :
PHP كود :
SELECT [S_N] as 'S.N',[NAME_OF_CONTRACTOR] as 'Name Of Contractor',[CONTRACTOR_WORKS] as 'Contractor Works',[PORJECT_NAME] as 'Project Name',[PROJECT_NUMBER] as 'Project Number',[TOTAL_OF_WORKS] as 'Total Of Works' FROM [dbo].[CONTRACTORS]
المهم تفضل هذا الكود الذي طلبته اي تعبئة الكومبو بوكس دون المساس بالجدول :
PHP كود :
// FillComboBox /// <summary> /// تعبئة و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param> /// <param name="SqlString">الاستعلام المستخدم</param> /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void FillComboBox(DataGridView Dgv, string SqlString, string ColName, int ColInt) { DataTable dt = new DataTable(); dt = loadData(SqlString); // ADD COLUMNS DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); combo.HeaderText = ColName;// "Office" combo.Name = "combo"; combo.DataPropertyName = ColName;// "Office" ArrayList row = new ArrayList(); // FILL ARRAYLIST FROM DATATABLE foreach (DataRow dr in dt.Rows) { row.Add(dr[ColName].ToString());// "Office" } // ADD TO COMBO combo.Items.AddRange(row.ToArray()); // Remove Old Column Dgv.Columns.RemoveAt(ColInt); // ADD THE COMBO TO DATAGRIDVIEW Dgv.Columns.Insert(ColInt, combo); }
و هذه طريقة استعماله :
PHP كود :
Class1.FillComboBox(dataGridView2, "select Office from Employee", "Office", 0);
أهم نقطة تقوم بتعبئة الداتا غريد فيو قبل تعبئة الكومبو بوكس التي بداخله .
عندي سؤال مهم : ماهو الوضع المعين ممكن تشرح لي هذه النقطة لأني أطور الفكرة للاستخدام الشخصي لملء الجدول مع الكومبوبوكس الموجودة بداخله .
(12-07-19, 02:16 PM)asemshahen5 كتب : تعبئة الداتا غريد متلها متل اي تعبئة وضعه المعين كيف تسمية عناوين الجدول اسهل حاجة :
PHP كود :
dataGridView1.Columns[0].HeaderText = "Test";
أو عن طريق الاستعلام :
PHP كود :
SELECT [S_N] as 'S.N',[NAME_OF_CONTRACTOR] as 'Name Of Contractor',[CONTRACTOR_WORKS] as 'Contractor Works',[PORJECT_NAME] as 'Project Name',[PROJECT_NUMBER] as 'Project Number',[TOTAL_OF_WORKS] as 'Total Of Works' FROM [dbo].[CONTRACTORS]
المهم تفضل هذا الكود الذي طلبته اي تعبئة الكومبو بوكس دون المساس بالجدول :
PHP كود :
// FillComboBox /// <summary> /// تعبئة و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param> /// <param name="SqlString">الاستعلام المستخدم</param> /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void FillComboBox(DataGridView Dgv, string SqlString, string ColName, int ColInt) { DataTable dt = new DataTable(); dt = loadData(SqlString); // ADD COLUMNS DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); combo.HeaderText = ColName;// "Office" combo.Name = "combo"; combo.DataPropertyName = ColName;// "Office" ArrayList row = new ArrayList(); // FILL ARRAYLIST FROM DATATABLE foreach (DataRow dr in dt.Rows) { row.Add(dr[ColName].ToString());// "Office" } // ADD TO COMBO combo.Items.AddRange(row.ToArray()); // Remove Old Column Dgv.Columns.RemoveAt(ColInt); // ADD THE COMBO TO DATAGRIDVIEW Dgv.Columns.Insert(ColInt, combo); }
و هذه طريقة استعماله :
PHP كود :
Class1.FillComboBox(dataGridView2, "select Office from Employee", "Office", 0);
أهم نقطة تقوم بتعبئة الداتا غريد فيو قبل تعبئة الكومبو بوكس التي بداخله .
عندي سؤال مهم : ماهو الوضع المعين ممكن تشرح لي هذه النقطة لأني أطور الفكرة للاستخدام الشخصي لملء الجدول مع الكومبوبوكس الموجودة بداخله .
public static void FillDGV(DataGridView dgv, string sql)
{
SqlDataAdapter Da = new SqlDataAdapter(sql, Con);
DataSet Ds = new DataSet();
Da.Fill(Ds);
dgv.DataSource = Ds.Tables[0];
}
وهذا لسطر يوضع في حدث الفوردلود عند تحميل الفورم او حسب ماتريد
كود :
DB.FillDGV(DataView_Holidays, "select * From T_Holid");
وايضا ممكن تستدعي البينت من اكثر من جدول حسب رعبتك
بهذا السطر
كود :
DB.FillDGV(DataView_Privt, "select TB_Priv.Priv_Screen_ID,Screen_Nam,Priv_User_ID,Priv_Display,Priv_add,Priv_Edit,Priv_Delete ,Priv_Delete from TB_Priv,TB_Screen where TB_Priv.priv_Screen_ID=TB_Screen.Screen_ID and TB_Screen.List_ID=(select List_ID from TB_Lists where List_ID=" + List_Show.SelectedValue + ") and Priv_User_ID=" + List_User.SelectedValue + "");
اما عن كود تعبه الكمبو بوكس داخل الداتا فيو ال حضرتك مشكورا قمت بعمله
ليس هو ما اريده لانه لا يعمل معي داخل الكلاس الخاص بالمشروع
اتمنى اجد كود اخر بطريقه مبسطه لو امكن
مثل هذا
كود :
public static void FillComBobx(DataGridViewComboBoxCell Cmd, string Sql, string displayCol, string valueCol)
{
SqlDataAdapter Da = new SqlDataAdapter(Sql, Con);
DataSet Ds = new DataSet();
Da.Fill(Ds);
عموما
طلبى هو كلاس لملء كمبو بوكس داخل الداتا فيو وليس لملء الداتا فيو
هذا العمل الذي ارسلته لملء الاثنين معا داتا فيو وكمبو بوكس
وهذا ليس طلبى
واسف انى تقلت عليك
طلبك في FillDgvComboBox الموجود بالكلاس فهو يملأ فقط عامود الكومبو بوكس و ليس له علاقة بملء الجدول بشرط وضع ترتيب عامود الكومبو بوكس في الجريد فيو .
منفذ بالمثال على الداتا جريد فيو 2 في حدث اللود في الفورم رقم السطر الخاص بتعبئة الداتا جريد فيو 2 : 25
رقم سطر تعبئة فقط الكومبو بوكس الموجود الداتا جريد فيو : 27 و السطر هو :
PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2, "select Name from FillComboBoxTB", "Name", 1);
شرح الكود :
dataGridView2 - هو اسم الداتا جريد فيو الذي تريد إضافة عامود الكومبو بوكس له .
"select Name from FillComboBoxTB" - الاستعلام الخاص بتعبئة الكومبو بوكس الموجود بالجريد فيو من أي جدول كان سواء كان جدول المعبأ به الداتا جريد فيو ام لا .
"Name" - اسم العامود الذي تريد تعبئة الكومبو بكس به .
1 - طبعا انت عامل في الجريد فيو عامود خاص الكومبو بوكس ما هو ترتيبه في الجريد فيو يبدأ العد من 0 الى اخر عامود .
مع اطيب تمنياتي لك بالنجاح و التوفيق .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
(12-07-19, 09:32 PM)asemshahen5 كتب : طلبك في FillDgvComboBox الموجود بالكلاس فهو يملأ فقط عامود الكومبو بوكس و ليس له علاقة بملء الجدول بشرط وضع ترتيب عامود الكومبو بوكس في الجريد فيو .
منفذ بالمثال على الداتا جريد فيو 2 في حدث اللود في الفورم رقم السطر الخاص بتعبئة الداتا جريد فيو 2 : 25
رقم سطر تعبئة فقط الكومبو بوكس الموجود الداتا جريد فيو : 27 و السطر هو :
PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2, "select Name from FillComboBoxTB", "Name", 1);
شرح الكود :
dataGridView2 - هو اسم الداتا جريد فيو الذي تريد إضافة عامود الكومبو بوكس له .
"select Name from FillComboBoxTB" - الاستعلام الخاص بتعبئة الكومبو بوكس الموجود بالجريد فيو من أي جدول كان سواء كان جدول المعبأ به الداتا جريد فيو ام لا .
"Name" - اسم العامود الذي تريد تعبئة الكومبو بكس به .
1 - طبعا انت عامل في الجريد فيو عامود خاص الكومبو بوكس ما هو ترتيبه في الجريد فيو يبدأ العد من 0 الى اخر عامود .
مع اطيب تمنياتي لك بالنجاح و التوفيق .
حبيبي صدقنى نا فهم كلام حضرتك
ال اقصده ان الكمبو بوكس دائما بيتعامل مع جزئين
DisplayMember
ValueMember
جزء الظاهر وجزء اخر وهو ID
اين هذا فى الكلاس المرسل من حضرتك
كيف احدد ValueMember او DisplayMember
هذا كلاس لتعبئه اي كمبو بوكس خارج الداتا فيو اريد تعديله ليتناسب مع الكمبو بوكس داخل الداتا فيو
كود :
public static void FillComBobx(ComboBox Cmd, string Sql, string displayCol, string valueCol)
{
SqlDataAdapter Da = new SqlDataAdapter(Sql, Con);
DataSet Ds = new DataSet();
Da.Fill(Ds);
Cmd.DataSource = Ds.Tables[0];
Cmd.DisplayMember = displayCol;
Cmd.ValueMember = valueCol;
Cmd.SelectedIndex = -1;
}
13-07-19, 02:20 PM (آخر تعديل لهذه المشاركة : 13-07-19, 03:03 PM {2} بواسطة asemshahen5.)
انا بستخدم ArrayList بتعبئة الكومبو بوكس يوجد عدة طرق لتعبئة الكومبو واحدة التي ذكرتها وواحدة اخرة تعبئتها عن طريق string
PHP كود :
DataGridViewComboBoxCell col = new DataGridViewComboBoxCell(); col.Items.Add(string);
إما تكون داخل لوب او تستخدم الارراي ليست ونضيفها بتعليمة
PHP كود :
col.items.AddRange(ArrayList);
PHP كود :
// FillComboBox /// <summary> /// تعبئة و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param> /// <param name="SqlString">الاستعلام المستخدم</param> /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void FillDgvComboBox(DataGridView Dgv, string SqlString, string ColName, int ColInt) {// تعريف داتا تابيل جديد DataTable dt = new DataTable(); // تعبئة الداتا تيبل من فانكشن FillDataTable dt = FillDataTable(SqlString); // ADD COLUMNS // تعريف عامود نوع كومبو بوكس جديد DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); // تعريف اسم العامود في الداتا جريد combo.HeaderText = ColName; // تعريف الاسم البرمجي الخاص بالعامود combo.Name = "combo"; // تعريف DataPropertyName الخاصة باسم العامود بقاعدة البيانات combo.DataPropertyName = ColName; // تعريف أرراي ليست جديدة ArrayList row = new ArrayList(); // FILL ARRAYLIST FROM DATATABLE //تعبئة الارراي ليست بالقيم من الداتا تابل عن طريق لوب foreach (DataRow dr in dt.Rows) {//تعبئة الارراي ليست بالقيم من الداتا تابل المعبئة حسب الاستعلام row.Add(dr[ColName].ToString()); } // تعبئة الكومبو بوكس من الارراي ليست combo.Items.AddRange(row.ToArray()); // Remove Old Column // حذف عامود الكومبو بوكس القديم الموجود في الجريد فيو Dgv.Columns.RemoveAt(ColInt); // ADD THE COMBO TO DATAGRIDVIEW // إضافة العامود الجديد المعبأ من الارراي ليست الى الجريد فيو Dgv.Columns.Insert(ColInt, combo); }
PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2, "select Name from FillComboBoxTB", "Name", 1);
في المرفقات مثال جديد الداتا جريد معبأ من جدول في قاعدة البيانات و الكومبو الموجودة فيه معبأة من جدول اخر .
مع أطيب تمنياتي لك بالتوفيق و النجاح .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر