تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل كلاس لتعبئه كمبو بوكس داخل الداتا فيو
#21
(12-07-19, 02:17 AM)asemshahen5 كتب : لم افهم قصدك ممكن توضح اكثر .

تعبئه الداتافيو بتتم بشرط
كما  في المثال 
كود :
           DB.FillDGV(DGV_Schol, "select * from T_School where Emp_ID=" + textBox1.Text + "");
 
كيف يتم ذلك مع الكود الذي ارسلته
وان كان صعب 
 يفضل تعديل الكود ليتم تعبئه الكمبو بوكس فقط وليس الداتا فيو
الرد }}}
تم الشكر بواسطة:
#22
(12-07-19, 02:54 AM)amonem كتب :
(12-07-19, 02:17 AM)asemshahen5 كتب : لم افهم قصدك ممكن توضح اكثر .

تعبئه الداتافيو بتتم بشرط
كما  في المثال 
كود :
           DB.FillDGV(DGV_Schol, "select * from T_School where Emp_ID=" + textBox1.Text + "");
 
كيف يتم ذلك مع الكود الذي ارسلته
وان كان صعب 
 يفضل تعديل الكود ليتم تعبئه الكمبو بوكس فقط وليس الداتا فيو

عدل الكود ليصبح هكذا :

PHP كود :
       /// <summary>
 
       /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو
 
       /// </summary>
 
       /// <param name="Dgv">اسم الداتاغريد فيو على الفورم</param>
 
       /// <param name="playerssql">الاستعلام المستخدم</param>
 
       /// <param name="FilterColumnName">اذا كان هناك بحث ضع اسم العامود المراد البحث فيه</param>
 
       /// <param name="RowFilterValue">القيمة المراد البحث عنها</param>
 
       /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param>
 
       /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param>
 
       public static void dataGridViewLoad(DataGridView Dgvstring playerssqlstring FilterColumnNamestring RowFilterValuestring ColNameint ColInt)
 
       {
 
           DataView dv = new DataView();
 
           dv loadData(playerssql).DefaultView;
 
           if (RowFilterValue.Length 0)
 
           {
 
               int value 0;
 
               if (Int32.TryParse(RowFilterValue.Trim(), out value))
 
               {
 
                   dv.RowFilter " " FilterColumnName " = " RowFilterValue;
 
               }
 
               else
                
{
 
                   dv.RowFilter " " FilterColumnName " = '" RowFilterValue "'";
 
               }
 
               Dgv.DataSource dv;
 
           }
 
           else
            
{
 
               dv.RowFilter =null;
 
               Dgv.DataSource loadData(playerssql);
 
           }
 
           addCombo(DgvColNameColInt);
 
       

و كود الاستدعاء ليكون هكذا :

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

او في حدث آخر كالتالي :

PHP كود :
       private void textBox1_KeyDown(object senderKeyEventArgs e)
 
       {
 
           if (e.KeyCode == Keys.Enter)
 
           {
 
               Class1.dataGridViewLoad(dataGridView1"SELECT * FROM CONTRACTORS ""s_n"textBox1.Text"NAME_OF_CONTRACTOR"1);
 
           }
 
       

و بإذن الله هكذا نكون قد انهينا كلاس تعبئة الداتا غريد فيو مع الكومبو الموجود فيه ليعمل على أي جدول والحمد الله رب العالمين على ذلك .
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#23
(12-07-19, 04:28 AM)asemshahen5 كتب :
(12-07-19, 02:54 AM)amonem كتب :
(12-07-19, 02:17 AM)asemshahen5 كتب : لم افهم قصدك ممكن توضح اكثر .

تعبئه الداتافيو بتتم بشرط
كما  في المثال 
كود :
           DB.FillDGV(DGV_Schol, "select * from T_School where Emp_ID=" + textBox1.Text + "");
 
كيف يتم ذلك مع الكود الذي ارسلته
وان كان صعب 
 يفضل تعديل الكود ليتم تعبئه الكمبو بوكس فقط وليس الداتا فيو

عدل الكود ليصبح هكذا :

PHP كود :
       /// <summary>
 
       /// تعبئة الغريد فيو و الكمبو بوكس اللي في الغريد فيو
 
       /// </summary>
 
       /// <param name="Dgv">اسم الداتاغريد فيو على الفورم</param>
 
       /// <param name="playerssql">الاستعلام المستخدم</param>
 
       /// <param name="FilterColumnName">اذا كان هناك بحث ضع اسم العامود المراد البحث فيه</param>
 
       /// <param name="RowFilterValue">القيمة المراد البحث عنها</param>
 
       /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param>
 
       /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param>
 
       public static void dataGridViewLoad(DataGridView Dgvstring playerssqlstring FilterColumnNamestring RowFilterValuestring ColNameint ColInt)
 
       {
 
           DataView dv = new DataView();
 
           dv loadData(playerssql).DefaultView;
 
           if (RowFilterValue.Length 0)
 
           {
 
               int value 0;
 
               if (Int32.TryParse(RowFilterValue.Trim(), out value))
 
               {
 
                   dv.RowFilter " " FilterColumnName " = " RowFilterValue;
 
               }
 
               else
                
{
 
                   dv.RowFilter " " FilterColumnName " = '" RowFilterValue "'";
 
               }
 
               Dgv.DataSource dv;
 
           }
 
           else
            
{
 
               dv.RowFilter =null;
 
               Dgv.DataSource loadData(playerssql);
 
           }
 
           addCombo(DgvColNameColInt);
 
       

و كود الاستدعاء ليكون هكذا :

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

او في حدث آخر كالتالي :

PHP كود :
       private void textBox1_KeyDown(object senderKeyEventArgs e)
 
       {
 
           if (e.KeyCode == Keys.Enter)
 
           {
 
               Class1.dataGridViewLoad(dataGridView1"SELECT * FROM CONTRACTORS ""s_n"textBox1.Text"NAME_OF_CONTRACTOR"1);
 
           }
 
       

و بإذن الله هكذا نكون قد انهينا كلاس تعبئة الداتا غريد فيو مع الكومبو الموجود فيه ليعمل على أي جدول والحمد الله رب العالمين على ذلك .

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

PHP كود :
dataGridView1.Columns[0].HeaderText "Test"

أو عن طريق الاستعلام :

PHP كود :
SELECT [S_N] as 'S.N',[NAME_OF_CONTRACTOR] as 'Name Of Contractor',[CONTRACTOR_WORKS] as 'Contractor Works',[PORJECT_NAME] as 'Project Name',[PROJECT_NUMBER] as 'Project Number',[TOTAL_OF_WORKS] as 'Total Of Works' FROM [dbo].[CONTRACTORS

المهم تفضل هذا الكود الذي طلبته اي تعبئة الكومبو بوكس دون المساس بالجدول :

PHP كود :
       // FillComboBox
 
       /// <summary>
 
       /// تعبئة و الكمبو بوكس اللي في الغريد فيو
 
       /// </summary>
 
       /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param>
 
       /// <param name="SqlString">الاستعلام المستخدم</param>
 
       /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param>
 
       /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param>
 
       public static void FillComboBox(DataGridView Dgvstring SqlStringstring ColNameint ColInt)
 
       {
 
           DataTable dt = new DataTable();
 
           dt loadData(SqlString);
 
           // 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);
 
       

و هذه طريقة استعماله :

PHP كود :
Class1.FillComboBox(dataGridView2"select Office from Employee""Office"0); 

أهم نقطة تقوم بتعبئة الداتا غريد فيو قبل تعبئة الكومبو بوكس التي بداخله .

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

كلاس لملئ الجدول و الكومبو بوكس الموجودة بداخله
الرد }}}
تم الشكر بواسطة:
#25
(12-07-19, 02:16 PM)asemshahen5 كتب : تعبئة الداتا غريد متلها متل اي تعبئة وضعه المعين كيف تسمية عناوين الجدول اسهل حاجة :

PHP كود :
dataGridView1.Columns[0].HeaderText "Test"

أو عن طريق الاستعلام :

PHP كود :
SELECT [S_N] as 'S.N',[NAME_OF_CONTRACTOR] as 'Name Of Contractor',[CONTRACTOR_WORKS] as 'Contractor Works',[PORJECT_NAME] as 'Project Name',[PROJECT_NUMBER] as 'Project Number',[TOTAL_OF_WORKS] as 'Total Of Works' FROM [dbo].[CONTRACTORS

المهم تفضل هذا الكود الذي طلبته اي تعبئة الكومبو بوكس دون المساس بالجدول :

PHP كود :
       // FillComboBox
 
       /// <summary>
 
       /// تعبئة و الكمبو بوكس اللي في الغريد فيو
 
       /// </summary>
 
       /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param>
 
       /// <param name="SqlString">الاستعلام المستخدم</param>
 
       /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param>
 
       /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param>
 
       public static void FillComboBox(DataGridView Dgvstring SqlStringstring ColNameint ColInt)
 
       {
 
           DataTable dt = new DataTable();
 
           dt loadData(SqlString);
 
           // 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);
 
       

و هذه طريقة استعماله :

PHP كود :
Class1.FillComboBox(dataGridView2"select Office from Employee""Office"0); 

أهم نقطة تقوم بتعبئة الداتا غريد فيو قبل تعبئة الكومبو بوكس التي بداخله .

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

كلاس لملئ الجدول و الكومبو بوكس الموجودة بداخله
بالنسبه لكود عرض البيانات فى الداتا فيو

كود :
public static void FillDGV(DataGridView dgv, string sql)
       {
           SqlDataAdapter Da = new SqlDataAdapter(sql, Con);
           DataSet Ds = new DataSet();
           Da.Fill(Ds);
           dgv.DataSource = Ds.Tables[0];

       }

وهذا لسطر يوضع في حدث الفوردلود عند تحميل الفورم او حسب ماتريد
كود :
           DB.FillDGV(DataView_Holidays, "select * From T_Holid");
وايضا ممكن تستدعي البينت من اكثر من جدول حسب رعبتك 
بهذا السطر
كود :
               DB.FillDGV(DataView_Privt, "select TB_Priv.Priv_Screen_ID,Screen_Nam,Priv_User_ID,Priv_Display,Priv_add,Priv_Edit,Priv_Delete ,Priv_Delete from TB_Priv,TB_Screen where TB_Priv.priv_Screen_ID=TB_Screen.Screen_ID and TB_Screen.List_ID=(select List_ID from TB_Lists where List_ID=" + List_Show.SelectedValue + ") and Priv_User_ID=" + List_User.SelectedValue + "");

اما عن كود تعبه الكمبو بوكس داخل الداتا فيو ال حضرتك مشكورا قمت بعمله
ليس هو ما اريده لانه لا يعمل معي داخل الكلاس الخاص بالمشروع
اتمنى اجد كود اخر بطريقه مبسطه لو امكن
مثل هذا 
كود :
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;
   
       }
الرد }}}
تم الشكر بواسطة:
#26
راجع هذا الموضوع في قسم امثلة و مشاريع :

كلاس لملئ الجدول و الكومبو بوكس الموجودة بداخله

به مثال بسيط شارح نفسه ارجو ان يكون طلبك .
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#27
(12-07-19, 07:31 PM)asemshahen5 كتب : راجع هذا الموضوع في قسم امثلة و مشاريع :

كلاس لملئ الجدول و الكومبو بوكس الموجودة بداخله

به مثال بسيط شارح نفسه ارجو ان يكون طلبك .
اسف انى تعبتك معايا الظاهر انا مش قادر اوضح طلبى 

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

منفذ بالمثال على الداتا جريد فيو 2 في حدث اللود في الفورم رقم السطر الخاص بتعبئة الداتا جريد فيو 2 : 25 

رقم سطر تعبئة فقط الكومبو بوكس الموجود الداتا جريد فيو : 27 و السطر هو :

PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2"select Name from FillComboBoxTB""Name"1); 

شرح الكود :

dataGridView2 - هو اسم الداتا جريد فيو الذي تريد إضافة عامود الكومبو بوكس له .

"select Name from FillComboBoxTB" - الاستعلام الخاص بتعبئة الكومبو بوكس الموجود بالجريد فيو من أي جدول كان سواء كان جدول المعبأ به الداتا جريد فيو ام لا .

"Name" - اسم العامود الذي تريد تعبئة الكومبو بكس به .

1 - طبعا انت عامل في الجريد فيو عامود خاص الكومبو بوكس ما هو ترتيبه في الجريد فيو يبدأ العد من 0 الى اخر عامود .


مع اطيب تمنياتي لك بالنجاح و التوفيق .
الرد }}}
تم الشكر بواسطة:
#29
(12-07-19, 09:32 PM)asemshahen5 كتب : طلبك في FillDgvComboBox الموجود بالكلاس فهو يملأ فقط عامود الكومبو بوكس و ليس له علاقة بملء الجدول بشرط وضع ترتيب عامود الكومبو بوكس في الجريد فيو .

منفذ بالمثال على الداتا جريد فيو 2 في حدث اللود في الفورم رقم السطر الخاص بتعبئة الداتا جريد فيو 2 : 25 

رقم سطر تعبئة فقط الكومبو بوكس الموجود الداتا جريد فيو : 27 و السطر هو :

PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2"select Name from FillComboBoxTB""Name"1); 

شرح الكود :

dataGridView2 - هو اسم الداتا جريد فيو الذي تريد إضافة عامود الكومبو بوكس له .

"select Name from FillComboBoxTB" - الاستعلام الخاص بتعبئة الكومبو بوكس الموجود بالجريد فيو من أي جدول كان سواء كان جدول المعبأ به الداتا جريد فيو ام لا .

"Name" - اسم العامود الذي تريد تعبئة الكومبو بكس به .

1 - طبعا انت عامل في الجريد فيو عامود خاص الكومبو بوكس ما هو ترتيبه في الجريد فيو يبدأ العد من 0 الى اخر عامود .


مع اطيب تمنياتي لك بالنجاح و التوفيق .

حبيبي صدقنى نا فهم كلام حضرتك
ال اقصده ان الكمبو بوكس دائما بيتعامل مع جزئين
DisplayMember

ValueMember

جزء الظاهر وجزء اخر وهو ID

اين هذا فى الكلاس المرسل من حضرتك
كيف احدد ValueMember او DisplayMember

هذا كلاس لتعبئه اي كمبو بوكس خارج الداتا فيو اريد تعديله ليتناسب مع الكمبو بوكس داخل الداتا فيو

كود :
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;
       }
 
اتمنى تكون الفكره واضحه
وكل عام وانت بخير
الرد }}}
تم الشكر بواسطة: asemshahen5
#30
انا بستخدم ArrayList بتعبئة الكومبو بوكس يوجد عدة طرق لتعبئة الكومبو واحدة التي ذكرتها وواحدة اخرة تعبئتها عن طريق string

PHP كود :
DataGridViewComboBoxCell col = new DataGridViewComboBoxCell();
col.Items.Add(string); 

 
إما تكون داخل لوب او تستخدم الارراي ليست ونضيفها بتعليمة 


PHP كود :
col.items.AddRange(ArrayList); 
PHP كود :
             // FillComboBox
        /// <summary>
        /// تعبئة و الكمبو بوكس اللي في الغريد فيو
        /// </summary>
        /// <param name="Dgv">اسم الداتا غريد فيو على الفورم</param>
        /// <param name="SqlString">الاستعلام المستخدم</param>
        /// <param name="ColName">اسم العامود الذي تريد تعبئة الكومبو الخاص بالغريد</param>
        /// <param name="ColInt">ترتيب العامود بالداتا غريد فيو</param>
        public static void FillDgvComboBox(DataGridView Dgvstring SqlStringstring ColNameint ColInt)
        {   // تعريف داتا تابيل جديد
            DataTable dt = new DataTable();
            // تعبئة الداتا تيبل من فانكشن FillDataTable
            dt FillDataTable(SqlString);
            // ADD COLUMNS // تعريف عامود نوع كومبو بوكس جديد
            DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
            // تعريف اسم العامود في الداتا جريد
            combo.HeaderText ColName;
            // تعريف الاسم البرمجي الخاص بالعامود
            combo.Name "combo";
            // تعريف DataPropertyName الخاصة باسم العامود بقاعدة البيانات
            combo.DataPropertyName ColName;
            // تعريف أرراي ليست جديدة
            ArrayList row = new ArrayList();
            // FILL ARRAYLIST FROM DATATABLE
            //تعبئة الارراي ليست بالقيم من الداتا تابل عن طريق لوب 
            foreach (DataRow dr in dt.Rows)
            {   //تعبئة الارراي ليست بالقيم من الداتا تابل المعبئة حسب الاستعلام 
                row.Add(dr[ColName].ToString());
            }
            // تعبئة الكومبو بوكس من الارراي ليست
            combo.Items.AddRange(row.ToArray());
            // Remove Old Column // حذف عامود الكومبو بوكس القديم الموجود في الجريد فيو
            Dgv.Columns.RemoveAt(ColInt);
            // ADD THE COMBO TO DATAGRIDVIEW // إضافة العامود الجديد المعبأ من الارراي ليست الى الجريد فيو
            Dgv.Columns.Insert(ColIntcombo);
        } 
     
PHP كود :
FillDataGridViewAndComboBoxCLS.FillDgvComboBox(dataGridView2"select Name from FillComboBoxTB""Name"1); 

في المرفقات مثال جديد الداتا جريد معبأ من جدول في قاعدة البيانات و الكومبو الموجودة فيه معبأة من جدول اخر .

مع أطيب تمنياتي لك بالتوفيق و النجاح .


الملفات المرفقة
.zip   FillComboBoxInDgv.zip (الحجم : 50.53 ك ب / التحميلات : 27)
الرد }}}
تم الشكر بواسطة: سعود



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


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