تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو
#11
الشكر لله و الحمد الله .
الرد }}}
تم الشكر بواسطة:
#12
(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 Cmdstring Sqlstring displayColstring valueCol)
 
       {
 
           SqlDataAdapter Da = new SqlDataAdapter(SqlCon);
 
           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 dgvstring Sqlstring displayCol,int ColInt)
 
       {
 
           SqlDataAdapter sda1 = new SqlDataAdapter(SqlCon);
 
           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 senderEventArgs e)
 
       {
 
           DB.FillDGVComBobx(dataGridView1"select Office,Name,EmployeeID from Employee""Office",0);
 
       

بالرغم ان الكود طويل لكن النتيجه 100%
شكرا ليك استاذي الغالى

غير فقط الVoid الي داخل ال Class
و ال Call Void 
من الفورم ,  قفط لااكثر, والكود يعمل , اذا كان لا يعمل معك  , شيك علي الاتصال بقاعده البيانات والاعمده المراد اظهارها
الرد }}}
تم الشكر بواسطة:
#13
(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 Cmdstring Sqlstring displayColstring valueCol)
 
       {
 
           SqlDataAdapter Da = new SqlDataAdapter(SqlCon);
 
           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 dgvstring Sqlstring displayCol,int ColInt)
 
       {
 
           SqlDataAdapter sda1 = new SqlDataAdapter(SqlCon);
 
           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 senderEventArgs 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 Cmdstring Sqlstring displayColstring valueCol)
 
       {
 
           SqlDataAdapter Da = new SqlDataAdapter(SqlCon);
 
           DataSet Ds = new DataSet();
 
           Da.Fill(Ds);
 
          
            Cmd
.DataSource Ds.Tables[0];
 
           Cmd.DisplayMember displayCol;
 
           Cmd.ValueMember valueCol;
 
    
        


شكر لك استاذي الفاضل
هذا الكود بيملا اول كمبو بوكس فى اول صف فقط 
اذا اردت اختيار بند اخر لا اجد اي بيانات داخل الكمبو بوكس االثاني
الرد }}}
تم الشكر بواسطة:
#14
لقد انتبهت لهذا الخطا البارحة و قمت بتعديل الكود المهم هذا الكلاس بعد التعديل باذن الله سيعمل من دون مشاكل سواء سجد جديد او تعديل سجل :

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 Dgvstring playerssqlstring ColNameint ColInt)
 
       {
 
           Dgv.DataSource loadData(playerssql);
 
           addCombo(DgvColNameColInt);
 
       }

 
       private static DataTable loadData(string playerssql)
 
       {
 
           SqlDataAdapter adapter = new SqlDataAdapter();
 
           SqlCommand cmd;
 
           //PLAYER TABLE
 
           cmd = new SqlCommand(playerssqlcon);
 
           adapter.SelectCommand cmd;
 
           adapter.Fill(dt);
 
           return dt;
 
       }

 
       //COMBO COLUMN
 
       private static void addCombo(DataGridView Dgvstring ColNameint 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(ColIntcombo);
 
           //Dgv.Columns.Add(combo);
 
       }

 
   }



هذا كود استدعائه :

PHP كود :
Class1.dataGridViewLoad(dataGridView1"select Office,Name,EmployeeID from Employee""Office",0); 
الرد }}}
تم الشكر بواسطة:
#15
(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.OpenCon.Open();
 
       }

 
       // ------------------[تعبئة كمبوبوكس]-------------------
 
       public static void FillComBobx(ComboBox Cmdstring Sqlstring displayColstring valueCol) {
 
           SqlDataAdapter Da = new SqlDataAdapter(SqlCon);
 
           DataTable Dt = new DataTable();
 
           Da.Fill(Dt);
 
           Cmd.DataSource Dt;
 
           Cmd.DisplayMember displayCol;
 
           Cmd.ValueMember valueCol;
 
           Cmd.SelectedIndex = -1;
 
       }

 
       // ------------[تعبئة داتاجريدفيوكمبوبوكس]-------------
 
       public static void FillDataGridViewComboBox(DataGridViewComboBoxColumn Cmdstring Sqlstring displayColstring valueCol) {
 
           SqlDataAdapter Da = new SqlDataAdapter(SqlCon);
 
           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 Dgvstring playerssqlstring ColNameint ColInt)
 
       {
 
           Dgv.DataSource loadData(playerssql);
 
           addCombo(DgvColNameColInt);
 
       }

 
       private static DataTable loadData(string playerssql)
 
       {
 
           SqlDataAdapter adapter = new SqlDataAdapter();
 
           SqlCommand cmd;
 
           //PLAYER TABLE
 
           cmd = new SqlCommand(playerssqlcon);
 
           adapter.SelectCommand cmd;
 
           adapter.Fill(dt);
 
           return dt;
 
       }

 
       //COMBO COLUMN
 
       private static void addCombo(DataGridView Dgvstring ColNameint 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(ColIntcombo);
 
           //Dgv.Columns.Add(combo);
 
       }

 
   }



هذا كود استدعائه :

PHP كود :
Class1.dataGridViewLoad(dataGridView1"select Office,Name,EmployeeID from Employee""Office",0); 

هذا الكود كامل باذن الله .
شكرا لاهتمامك استاذي الغاالي
بس للاسف فيه خطا فى الكود
يريت تجربه  وشوف النتيجه
الرد }}}
تم الشكر بواسطة:
#16
ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .

   

   

   


الملفات المرفقة
.zip   Backup.zip (الحجم : 83.94 ك ب / التحميلات : 26)
الرد }}}
تم الشكر بواسطة:
#17
(12-07-19, 12:55 AM)asemshahen5 كتب : ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .

ممكن تبعت المثال وانا اعدل الجدول
الرد }}}
تم الشكر بواسطة:
#18
و هذا مع جدول أخر .

   

   

و هذا الكود :

PHP كود :
Class1.dataGridViewLoad(dataGridView1"SELECT * FROM CONTRACTORS""NAME_OF_CONTRACTOR"1); 

و هذا سكربت الجدول :

PHP كود :
CREATE TABLE [dbo].[CONTRACTORS](
    [
S_N] [intIDENTITY(1,1NOT NULL,
    [
NAME_OF_CONTRACTOR] [varchar](100NULL,
    [
CONTRACTOR_WORKS] [varchar](100NULL,
    [
PORJECT_NAME] [varchar](100NULL,
    [
PROJECT_NUMBER] [varchar](100NULL,
    [
TOTAL_OF_WORKS] [varchar](100NULL,
 
CONSTRAINT [PK_CONTRACTORSPRIMARY KEY CLUSTERED 
(
    [
S_NASC
)WITH (PAD_INDEX OFFSTATISTICS_NORECOMPUTE OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS ONALLOW_PAGE_LOCKS ONON [PRIMARY]
ON [PRIMARY
الرد }}}
تم الشكر بواسطة:
#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] [intIDENTITY(1,1NOT NULL,
    [
NAME_OF_CONTRACTOR] [varchar](100NULL,
    [
CONTRACTOR_WORKS] [varchar](100NULL,
    [
PORJECT_NAME] [varchar](100NULL,
    [
PROJECT_NUMBER] [varchar](100NULL,
    [
TOTAL_OF_WORKS] [varchar](100NULL,
 
CONSTRAINT [PK_CONTRACTORSPRIMARY KEY CLUSTERED 
(
    [
S_NASC
)WITH (PAD_INDEX OFFSTATISTICS_NORECOMPUTE OFFIGNORE_DUP_KEY OFFALLOW_ROW_LOCKS ONALLOW_PAGE_LOCKS ONON [PRIMARY]
ON [PRIMARY

كدا اشتغل وتمام
سؤال
و حابب اضيف شرط لاستدعاء بيانات الداتا فيو 
لان المفروض الداتا فيو هيتم استدعاء بيانات موظف فقط وليس كل البيانات
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#20
لم افهم قصدك ممكن توضح اكثر .
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم