منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4
الشكر لله و الحمد الله .
(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 
من الفورم ,  قفط لااكثر, والكود يعمل , اذا كان لا يعمل معك  , شيك علي الاتصال بقاعده البيانات والاعمده المراد اظهارها
(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;
 
    
        


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

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); 
(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); 

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

[attachment=22031]

[attachment=22032]

[attachment=22033]
(12-07-19, 12:55 AM)asemshahen5 كتب : [ -> ]ممكن ان تقول لي اين الخطأ او تضع صورة له لاني قبل وضعه جربته عندي على أحد الجداول .

ممكن تبعت المثال وانا اعدل الجدول
و هذا مع جدول أخر .

[attachment=22035]

[attachment=22036]

و هذا الكود :

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
(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

كدا اشتغل وتمام
سؤال
و حابب اضيف شرط لاستدعاء بيانات الداتا فيو 
لان المفروض الداتا فيو هيتم استدعاء بيانات موظف فقط وليس كل البيانات
لم افهم قصدك ممكن توضح اكثر .
الصفحات : 1 2 3 4