المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
السلام عليكم ورحمة الله تعالى وبركاته
اساتذتى الكرام
ارجو مساعدتى فى تنفيذ هذ الطلب
يوجد Class يعمل على مستوى المشروع كاملا لتعبئه اي كمبو بوكس من قااعدة البيانات
وهو كلاتى
كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data;
namespace ComBobx
{
public static class DB
{
private static string constring = @"Data Source=.\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True";
public static SqlConnection Con = new SqlConnection(constring);
public static void openDB()
{
if (Con.State == ConnectionState.Open)
{
Con.Close();
}
Con.Open();
} // [فتح الاتصال بقاعدة البيانات]
// ------------------[تعبئة كمبو بوكس]-------------------
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;
}
}
}
وهذا السطر يوضع في حدث الفورم لود
PHP كود :
DB . FillComBobx ( comboBox1 , "select Name,ID from TB_School" , "Name" , "ID" );
وهذا الكود يعمل بطريقه ممتاذه على اى كمبو بوكس خارج الدتا فيو
لو اردت اطبق هذ الكود على كمبو بوكس داخل الداتا فيو بيطلع خطأ
هل هناك حل شبيه لهذا لتعبئه كمبو بوكس داخل الداتا فيو بنفس الطريقه باستخدام كلاس نظرا لان المشروع به عدد كبير جدا من الدتا فيو واغلبها كمبو بوكس
ولتخفيف الاكواد بدل تكرارها
وجزكم الله كل خير
مرفق ملف يوضح اكثر
الملفات المرفقة
ComBobx.rar (الحجم : 35.09 ك ب / التحميلات : 34)
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
(10-07-19, 04:46 PM) asemshahen5 كتب : https://www.youtube.com/watch?v=A7C9m7LkX_M
شكرا لردك
انا عايز اعمل كلاس يعمل على البروجكت كله
مثل الكود المرفق الخاص بالكمبو بوكس
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
10-07-19, 06:01 PM
(آخر تعديل لهذه المشاركة : 10-07-19, 06:31 PM {2} بواسطة asemshahen5 .)
خود دا الكود و افهمه و عدله حسب ما تراه :
PHP كود :
// ------------------[تعبئة كمبو بوكس اللي في الغريد فيو]------------------- public static void FillDGVComBobx ( DataGridView dgv , string Sql , string displayCol ) { SqlDataAdapter sda1 = new SqlDataAdapter ( Sql , Con ); DataTable dt1 = new DataTable (); sda1 . Fill ( dt1 ); ArrayList StringList = new ArrayList (); foreach ( DataRow item in dt1 . Rows ) { StringList . Add ( item [ displayCol ]. ToString ()); } foreach ( DataRow item in dt1 . Rows ) { int n = dgv . Rows . Add (); var CellSample = new DataGridViewComboBoxCell (); CellSample . DataSource = StringList ; dgv . Rows [ n ]. Cells [ 0 ] = CellSample ; //Name,EmployeeID dgv . Rows [ n ]. Cells [ 1 ]. Value = item [ "EmployeeID" ]. ToString (); dgv . Rows [ n ]. Cells [ 2 ]. Value = item [ "Name" ]. ToString (); dgv . Rows [ n ]. Cells [ 0 ]. Value = StringList [ n ]. ToString (); } }
PHP كود :
DB . FillDGVComBobx ( dataGridView1 , "select Office,Name,EmployeeID from Employee" , "Office" );
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
(10-07-19, 06:01 PM) asemshahen5 كتب : خود دا الكود و افهمه و عدله حسب ما تراه :
PHP كود :
// ------------------[تعبئة كمبو بوكس اللي في الغريد فيو]------------------- public static void FillDGVComBobx ( DataGridView dgv , string Sql , string displayCol ) { SqlDataAdapter sda1 = new SqlDataAdapter ( Sql , Con ); DataTable dt1 = new DataTable (); sda1 . Fill ( dt1 ); ArrayList StringList = new ArrayList (); foreach ( DataRow item in dt1 . Rows ) { StringList . Add ( item [ displayCol ]. ToString ()); } foreach ( DataRow item in dt1 . Rows ) { int n = dgv . Rows . Add (); var CellSample = new DataGridViewComboBoxCell (); CellSample . DataSource = StringList ; dgv . Rows [ n ]. Cells [ 0 ] = CellSample ; //Name,EmployeeID dgv . Rows [ n ]. Cells [ 1 ]. Value = item [ "EmployeeID" ]. ToString (); dgv . Rows [ n ]. Cells [ 2 ]. Value = item [ "Name" ]. ToString (); dgv . Rows [ n ]. Cells [ 0 ]. Value = StringList [ n ]. ToString (); } }
بص ياباشا
معلش لو تتعبك معايا
الكود دا موجود داخل كلاس عام يعمل على كل المشروع
كود :
// ------------------[تعبئة كمبو بوكس]-------------------
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;
}
ودا سطر واحد بيتم وضع اسم الكمبو بوكس وعمود ID واسم العمود المراد تعبئه الكمبو بوكس به واسم الجدول يوضع في حدث الفورم لود
كود :
DB.FillComBobx(comboBox1, "select Name,ID from TB_School", "Name", "ID");
يريت تعمل مثال على الملف المرفق وتبعتهولى
لانى مش قادر افهم الكود
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
10-07-19, 07:06 PM
(آخر تعديل لهذه المشاركة : 10-07-19, 07:16 PM {2} بواسطة asemshahen5 .)
هذا الكود بعد التعديل :
PHP كود :
/// <summary> /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="dgv">اسم الداتاغريد فيو على الفورم</param> /// <param name="Sql">الاستعلام المستخدم</param> /// <param name="displayCol">اسم العامود الموجود بالجدول بقاعدة البيانات</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void FillDGVComBobx ( DataGridView dgv , string Sql , string displayCol , int ColInt ) { SqlDataAdapter sda1 = new SqlDataAdapter ( Sql , Con ); DataTable dt1 = new DataTable (); sda1 . Fill ( dt1 ); ArrayList StringList = new ArrayList (); foreach ( DataRow item in dt1 . Rows ) { StringList . Add ( item [ displayCol ]. ToString ()); } int n = 0 ; int y = dt1 . Columns . Count - 1 ; foreach ( DataRow item in dt1 . Rows ) { n = dgv . Rows . Add (); foreach ( DataColumn itemCol in dt1 . Columns ) { DataGridViewComboBoxCell CellSample = new DataGridViewComboBoxCell (); CellSample . DataSource = StringList ; if ( itemCol . Ordinal == ColInt ) { dgv . Rows [ n ]. Cells [ itemCol . Ordinal ] = CellSample ; //Name,EmployeeID } else { dgv . Rows [ n ]. Cells [ itemCol . Ordinal ]. Value = item [ itemCol . ColumnName ]. ToString (); } } dgv . Rows [ n ]. Cells [ 0 ]. Value = StringList [ n ]. ToString (); } }
و هذا كود استدعائه :
PHP كود :
private void Form1_Load ( object sender , EventArgs e ) { DB . FillDGVComBobx ( dataGridView1 , "select Office,Name,EmployeeID from Employee" , "Office" , 0 ); }
الملفات المرفقة
ComBobx.zip (الحجم : 82.29 ك ب / التحميلات : 36)
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 15
المواضيع 0
الإنتساب : Jul 2019
السمعة :
4
الشكر: 1
تم شكره 46 مرات في 15 مشاركات
اتفضل , انا غيرت بس ال DataTable علشان اجربه عندي.
هتعمل تمرير لاي Combo ف ال Grid
ب الشكل ده
PHP كود :
( DataGridViewComboBoxCell ) dataGridView1 . Rows [ 0 ]. Cells [ 0 ]
PHP كود :
DB . FillComBobx (( DataGridViewComboBoxCell ) dataGridView1 . Rows [ 0 ]. Cells [ 0 ], "select ID,Char_Name from TabTest" , "ID" , "Char_Name" );
PHP كود :
// ------------------[تعبئة كمبو بوكس]------------------- 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 ); Cmd . DataSource = Ds . Tables [ 0 ]; Cmd . DisplayMember = displayCol ; Cmd . ValueMember = valueCol ; }
المشاركات : 2,324
المواضيع 81
الإنتساب : May 2018
السمعة :
522
الشكر: 13917
تم شكره 5687 مرات في 2270 مشاركات
مشكور جدا على الحل كان امامي و لم انتبه له لذلك تابعت لعمله يعبئ الداتا غريد بشكل كامل لكن طريقتك مبسطة اكثر و مختصر .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
المشاركات : 15
المواضيع 0
الإنتساب : Jul 2019
السمعة :
4
الشكر: 1
تم شكره 46 مرات في 15 مشاركات
10-07-19, 07:39 PM
(10-07-19, 07:32 PM) asemshahen5 كتب : مشكور جدا على الحل كان امامي و لم انتبه له لذلك تابعت لعمله يعبئ الداتا غريد بشكل كامل لكن طريقتك مبسطة اكثر و مختصر .
الشكر لله اخي , موفق ان شاء الله
المشاركات : 168
المواضيع 39
الإنتساب : Jan 2019
السمعة :
2
الشكر: 38
تم شكره 127 مرات في 67 مشاركات
10-07-19, 08:26 PM
(آخر تعديل لهذه المشاركة : 10-07-19, 08:27 PM {2} بواسطة amonem .)
(10-07-19, 07:23 PM) Eng.Ahmed Amen كتب : اتفضل , انا غيرت بس ال DataTable علشان اجربه عندي.
هتعمل تمرير لاي Combo ف ال Grid
ب الشكل ده
PHP كود :
( DataGridViewComboBoxCell ) dataGridView1 . Rows [ 0 ]. Cells [ 0 ]
PHP كود :
DB . FillComBobx (( DataGridViewComboBoxCell ) dataGridView1 . Rows [ 0 ]. Cells [ 0 ], "select ID,Char_Name from TabTest" , "ID" , "Char_Name" );
PHP كود :
// ------------------[تعبئة كمبو بوكس]------------------- 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 ); Cmd . DataSource = Ds . Tables [ 0 ]; Cmd . DisplayMember = displayCol ; Cmd . ValueMember = valueCol ; }
شكرا لاهتمامك استاذي الغالى
الكود دا مختصر لكن بيطلع خطأ لو ممكن ارفق مثال افضل
(10-07-19, 07:06 PM) asemshahen5 كتب : هذا الكود بعد التعديل :
PHP كود :
/// <summary> /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="dgv">اسم الداتاغريد فيو على الفورم</param> /// <param name="Sql">الاستعلام المستخدم</param> /// <param name="displayCol">اسم العامود الموجود بالجدول بقاعدة البيانات</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void FillDGVComBobx ( DataGridView dgv , string Sql , string displayCol , int ColInt ) { SqlDataAdapter sda1 = new SqlDataAdapter ( Sql , Con ); DataTable dt1 = new DataTable (); sda1 . Fill ( dt1 ); ArrayList StringList = new ArrayList (); foreach ( DataRow item in dt1 . Rows ) { StringList . Add ( item [ displayCol ]. ToString ()); } int n = 0 ; int y = dt1 . Columns . Count - 1 ; foreach ( DataRow item in dt1 . Rows ) { n = dgv . Rows . Add (); foreach ( DataColumn itemCol in dt1 . Columns ) { DataGridViewComboBoxCell CellSample = new DataGridViewComboBoxCell (); CellSample . DataSource = StringList ; if ( itemCol . Ordinal == ColInt ) { dgv . Rows [ n ]. Cells [ itemCol . Ordinal ] = CellSample ; //Name,EmployeeID } else { dgv . Rows [ n ]. Cells [ itemCol . Ordinal ]. Value = item [ itemCol . ColumnName ]. ToString (); } } dgv . Rows [ n ]. Cells [ 0 ]. Value = StringList [ n ]. ToString (); } }
و هذا كود استدعائه :
PHP كود :
private void Form1_Load ( object sender , EventArgs e ) { DB . FillDGVComBobx ( dataGridView1 , "select Office,Name,EmployeeID from Employee" , "Office" , 0 ); }
بالرغم ان الكود طويل لكن النتيجه 100%
شكرا ليك استاذي الغالى