RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - asemshahen5 - 10-07-19
الشكر لله و الحمد الله .
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - Eng.Ahmed Amen - 10-07-19
(10-07-19, 08:26 PM)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%
شكرا ليك استاذي الغالى
غير فقط الVoid الي داخل ال Class
و ال Call Void
من الفورم , قفط لااكثر, والكود يعمل , اذا كان لا يعمل معك , شيك علي الاتصال بقاعده البيانات والاعمده المراد اظهارها
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - amonem - 11-07-19
(10-07-19, 08:26 PM)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%
شكرا ليك استاذي الغالى
استاذي الفاضل
اكتشفت حاجه فى الكود
1- الكود بيعبى الكمبوبوكس ال به بيانات فقط لكن لما بحب اضيف بند جديد الكمبو بوكس مش بيكون به اي بيانات
2- استدعاء البيانات داخل الداتا فيو بتتم بوضع شرط استدعاء بيانات الموظف الحالى كيف اضع شرط به
(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; }
شكر لك استاذي الفاضل
هذا الكود بيملا اول كمبو بوكس فى اول صف فقط
اذا اردت اختيار بند اخر لا اجد اي بيانات داخل الكمبو بوكس االثاني
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - asemshahen5 - 11-07-19
لقد انتبهت لهذا الخطا البارحة و قمت بتعديل الكود المهم هذا الكلاس بعد التعديل باذن الله سيعمل من دون مشاكل سواء سجد جديد او تعديل سجل :
PHP كود :
using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Windows.Forms;
namespace ComBobx { public class Class1 { //INITIALIZATIONS static SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Accounts;Integrated Security=True"); static DataTable dt = new DataTable(); /// <summary> /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="Dgv">اسم الداتاغريد فيو على الفورم</param> /// <param name="playerssql">الاستعلام المستخدم</param> /// <param name="ColName">اسم العامود الموجود بالجدول بقاعدة البيانات</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void dataGridViewLoad(DataGridView Dgv, string playerssql, string ColName, int ColInt) { Dgv.DataSource = loadData(playerssql); addCombo(Dgv, ColName, ColInt); }
private static DataTable loadData(string playerssql) { SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand cmd; //PLAYER TABLE cmd = new SqlCommand(playerssql, con); adapter.SelectCommand = cmd; adapter.Fill(dt); return dt; }
//COMBO COLUMN private static void addCombo(DataGridView Dgv, string ColName, int ColInt) { //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); //Dgv.Columns.Add(combo); }
} }
هذا كود استدعائه :
PHP كود :
Class1.dataGridViewLoad(dataGridView1, "select Office,Name,EmployeeID from Employee", "Office",0);
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - amonem - 12-07-19
(11-07-19, 01:24 PM)asemshahen5 كتب : (11-07-19, 01:21 PM)Mohsien كتب : PHP كود :
using System.Data.SqlClient; using System.Windows.Forms; using System.Data;
namespace ComBobx { public static class DB { public static SqlConnection Con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True");
// ------------[فتح الاتصال بقاعدة البيانات]------------ public static void openDB() { if (Con.State != ConnectionState.Open) Con.Open(); }
// ------------------[تعبئة كمبوبوكس]------------------- public static void FillComBobx(ComboBox Cmd, string Sql, string displayCol, string valueCol) { SqlDataAdapter Da = new SqlDataAdapter(Sql, Con); DataTable Dt = new DataTable(); Da.Fill(Dt); Cmd.DataSource = Dt; Cmd.DisplayMember = displayCol; Cmd.ValueMember = valueCol; Cmd.SelectedIndex = -1; }
// ------------[تعبئة داتاجريدفيوكمبوبوكس]------------- public static void FillDataGridViewComboBox(DataGridViewComboBoxColumn Cmd, string Sql, string displayCol, string valueCol) { SqlDataAdapter Da = new SqlDataAdapter(Sql, Con); DataTable Dt = new DataTable(); Da.Fill(Dt); Cmd.DataSource = Dt; Cmd.DisplayMember = displayCol; Cmd.ValueMember = valueCol; }
} }
PHP كود :
DB.FillDataGridViewComboBox((DataGridViewComboBoxColumn)dataGridView1.Columns[0], "select Name,ID from TB_School", "Name", "ID");
هذا الكود بيملا اول كمبو بوكس فى اول صف فقط
اذا اردت اختيار بند اخر لا اجد اي بيانات داخل الكمبو بوكس االثاني .
(11-07-19, 01:08 PM)asemshahen5 كتب : لقد انتبهت لهذا الخطا البارحة و قمت بتعديل الكود المهم هذا الكلاس بعد التعديل باذن الله سيعمل من دون مشاكل سواء سجد جديد او تعديل سجل :
PHP كود :
using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Windows.Forms;
namespace ComBobx { public class Class1 { //INITIALIZATIONS static SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Accounts;Integrated Security=True"); static DataTable dt = new DataTable(); /// <summary> /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو /// </summary> /// <param name="Dgv">اسم الداتاغريد فيو على الفورم</param> /// <param name="playerssql">الاستعلام المستخدم</param> /// <param name="ColName">اسم العامود الموجود بالجدول بقاعدة البيانات</param> /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param> public static void dataGridViewLoad(DataGridView Dgv, string playerssql, string ColName, int ColInt) { Dgv.DataSource = loadData(playerssql); addCombo(Dgv, ColName, ColInt); }
private static DataTable loadData(string playerssql) { SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand cmd; //PLAYER TABLE cmd = new SqlCommand(playerssql, con); adapter.SelectCommand = cmd; adapter.Fill(dt); return dt; }
//COMBO COLUMN private static void addCombo(DataGridView Dgv, string ColName, int ColInt) { //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); //Dgv.Columns.Add(combo); }
} }
هذا كود استدعائه :
PHP كود :
Class1.dataGridViewLoad(dataGridView1, "select Office,Name,EmployeeID from Employee", "Office",0);
هذا الكود كامل باذن الله .
شكرا لاهتمامك استاذي الغاالي
بس للاسف فيه خطا فى الكود
يريت تجربه وشوف النتيجه
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - asemshahen5 - 12-07-19
ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .
[attachment=22031]
[attachment=22032]
[attachment=22033]
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - amonem - 12-07-19
(12-07-19, 12:55 AM)asemshahen5 كتب : ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .
ممكن تبعت المثال وانا اعدل الجدول
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - asemshahen5 - 12-07-19
و هذا مع جدول أخر .
[attachment=22035]
[attachment=22036]
و هذا الكود :
PHP كود :
Class1.dataGridViewLoad(dataGridView1, "SELECT * FROM CONTRACTORS", "NAME_OF_CONTRACTOR", 1);
و هذا سكربت الجدول :
PHP كود :
CREATE TABLE [dbo].[CONTRACTORS]( [S_N] [int] IDENTITY(1,1) NOT NULL, [NAME_OF_CONTRACTOR] [varchar](100) NULL, [CONTRACTOR_WORKS] [varchar](100) NULL, [PORJECT_NAME] [varchar](100) NULL, [PROJECT_NUMBER] [varchar](100) NULL, [TOTAL_OF_WORKS] [varchar](100) NULL, CONSTRAINT [PK_CONTRACTORS] PRIMARY KEY CLUSTERED ( [S_N] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - amonem - 12-07-19
(12-07-19, 01:16 AM)asemshahen5 كتب : و هذا مع جدول أخر .
و هذا الكود :
PHP كود :
Class1.dataGridViewLoad(dataGridView1, "SELECT * FROM CONTRACTORS", "NAME_OF_CONTRACTOR", 1);
و هذا سكربت الجدول :
PHP كود :
CREATE TABLE [dbo].[CONTRACTORS]( [S_N] [int] IDENTITY(1,1) NOT NULL, [NAME_OF_CONTRACTOR] [varchar](100) NULL, [CONTRACTOR_WORKS] [varchar](100) NULL, [PORJECT_NAME] [varchar](100) NULL, [PROJECT_NUMBER] [varchar](100) NULL, [TOTAL_OF_WORKS] [varchar](100) NULL, CONSTRAINT [PK_CONTRACTORS] PRIMARY KEY CLUSTERED ( [S_N] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
كدا اشتغل وتمام
سؤال
و حابب اضيف شرط لاستدعاء بيانات الداتا فيو
لان المفروض الداتا فيو هيتم استدعاء بيانات موظف فقط وليس كل البيانات
RE: عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو - asemshahen5 - 12-07-19
لم افهم قصدك ممكن توضح اكثر .
|