10-07-19, 08:48 PM
10-07-19, 09:21 PM
(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
من الفورم , قفط لااكثر, والكود يعمل , اذا كان لا يعمل معك , شيك علي الاتصال بقاعده البيانات والاعمده المراد اظهارها
11-07-19, 10:50 AM
(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;
}
شكر لك استاذي الفاضل
هذا الكود بيملا اول كمبو بوكس فى اول صف فقط
اذا اردت اختيار بند اخر لا اجد اي بيانات داخل الكمبو بوكس االثاني
11-07-19, 01:08 PM
لقد انتبهت لهذا الخطا البارحة و قمت بتعديل الكود المهم هذا الكلاس بعد التعديل باذن الله سيعمل من دون مشاكل سواء سجد جديد او تعديل سجل :
هذا كود استدعائه :
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);
12-07-19, 12:42 AM
(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);
هذا الكود كامل باذن الله .
بس للاسف فيه خطا فى الكود
يريت تجربه وشوف النتيجه
12-07-19, 12:55 AM
ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .
[attachment=22031]
[attachment=22032]
[attachment=22033]
[attachment=22031]
[attachment=22032]
[attachment=22033]
12-07-19, 01:00 AM
(12-07-19, 12:55 AM)asemshahen5 كتب : [ -> ]ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .
ممكن تبعت المثال وانا اعدل الجدول
12-07-19, 01:16 AM
و هذا مع جدول أخر .
[attachment=22035]
[attachment=22036]
و هذا الكود :
و هذا سكربت الجدول :
[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]
12-07-19, 01:52 AM
(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]
كدا اشتغل وتمام
سؤال
و حابب اضيف شرط لاستدعاء بيانات الداتا فيو
لان المفروض الداتا فيو هيتم استدعاء بيانات موظف فقط وليس كل البيانات
12-07-19, 02:17 AM
لم افهم قصدك ممكن توضح اكثر .