الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحميل الببيانات فى Combobox |فى gridview

بدأه casperdino في 3 سبتمبر 2012 · 21 رد · 4,824 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

انا عندى داتا بيس فيه الحقول الاتيه ويوجد بيها بيانات :

رقم الصنف - اسم الصنف - السعر

وعايز اعمل فاتورة بالشكل التالى:

اسم الصنف - السعر - العدد - الاجمالى

بحيث ان المستخدم يختار اسم الصنف فينزل سعرها وذلك من Gridview بمعنى تانى/

انا عندى فورم حاطط فيها GridView وعايز اضيف خانه اسم الصننف بس يبقى فى كومبو بوكس

لما يختار اسم الصنف ينزله سعره

وفى انتظار اى اجابه او مساعدة

#2
casperdino كتب:

السلام عليكم ورحمة الله وبركاته

انا عندى داتا بيس فيه الحقول الاتيه ويوجد بيها بيانات :

رقم الصنف - اسم الصنف - السعر

وعايز اعمل فاتورة بالشكل التالى:

اسم الصنف - السعر - العدد - الاجمالى

بحيث ان المستخدم يختار اسم الصنف فينزل سعرها وذلك من Gridview بمعنى تانى/

انا عندى فورم حاطط فيها GridView وعايز اضيف خانه اسم الصننف بس يبقى فى كومبو بوكس

لما يختار اسم الصنف ينزله سعره

السؤال بشكل تانى

1) كيف استطيع جعل أحد اعمدة datagridview على شكل كومبو بوكس؟؟

2) كيف استطيع تعبئة الكومبو بوكس ببيانات احد الجداول ؟؟

وفى انتظار اى اجابه او مساعدة

#3

ياجماعة انا عندى gridview عامل فيها كومبو بوكس عايز لما اختار من الكومبوبوكس اسم السلعة ينزل فى الخانه اللى جمبيه السعر الخاص بها

مثال لو اخترت لاب توب سونى ينزل جمبيه 500 جنيه

انا وصلت لحد لما عحملت البيانات (اسم السلعة)فى الكومبو بوكس بس مش بيجيبلى سعرها

#4

السلام عليكم ..

  1. من خصائص الــ DataGridView قم باختيار columns ثم حدد العمود المطلوب و من الخاصية ColumnType حدد DataGridViewCombobox و حدد له الــ DataSource و الــ valueMember و الــ DisplayMamber .
  2. بالمرفقات مثال لذلك مع خاصية إكمال تلقائي ..إذ يكفي أن تكتب الأحرف الأولى من اسم المادة ..
  3. لمعرفة القيمة التي تم اختيارها , استخدم الحدث CellValueChanged ,,,

AutoCompleteProblem.rar

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

الف شكر ليك ياخ حسام

انا مش فاهم بس اخر نقطة رقم 3

انا دلوقتى حملت الاصناف عادى جدا مفيش مشكله بس المشكلة انى لما اختار الصنف مبينزلش سعره

#6

السلام عليكم ..

أهلا و سهلا بك أخي ...

  1. لأحضار سعر المادة المختارة نقوم بمعالجة الحدث CellValueChanged , و لكن يفضل عدم وضعه من نافذة الخصائص مباشرة , بل يتم وضعه بعد تحميل البيانات :
     
            	invoiceBindingSource.DataSource = invoiceList;
            	dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(my_dataGridView1_CellValueChanged);

  2. في حدث الــ CellValueChanged نختبر هل الخلية التي حدث فيها التغيير هي خلية الصنف , عندها نأخذ رقم الصنف أو اسمه من الخلية (في مثالي يكون الــ Value للخلية هو رقم الصنف و الــformattedValue هي اسم الصنف لأني في خيارات العمود وضعت الــ ValueMemeber هو رقم المادة و الــ DisplayMember هو اسم المادة ).
  3. طالما أننا حصلنا على رقم المادة (أو اسمها) , نجلب السعر (يمكن جلبه من الــ DataTable الذي أحضرناه دون الذهاب لقاعدة البيانات) و نضع قيمة السعر التي تم إحضارها في عمود السعر في نفس السطر التي تم تغيير القيمة فيه .
     private void my_dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        	{
            	if (e.ColumnIndex == MaterialIDDGVColumn.Index)
            	{
                	int materialID = int.Parse(dataGridView1.Rows[e.RowIndex].Cells[MaterialIDDGVColumn.Index].Value.ToString());
                	float price = GetPrice(materialID);
                	dataGridView1.Rows[e.RowIndex].Cells[PriceDGVColumn.Index].Value = price;
    
    
            	}
        	}

  4. إذا لم تحل المشكلة , ارفق لنا النافذة المطلوبة مع الجدول , (يفضل sql server 2005 أو أكسس).

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

السلام عليكم

حضرتك قم بعمل متغير من نوع DataTable

DataTable dtblItems= new DataTable();

ثم قم بعمل متغير من نوع DataGridViewComboBoxColumn

DataGridViewComboBoxColumn dgvCmbx= new DataGridViewComboBoxColumn();

ثم تقوم بعمل Method تقوم بملىء DataTable فقط بأسماء جميع الأصناف

void GetItemNames()

{

// Create Command String

string cmdString = @"SELECT "put here the name of the column that contain the names of the items" FROM "put the name of the database table that contain the names of items"";

// Assign table name and clear all of its rows.

dtblItems.TableName = "put the name of the database table that contain the names of items";

dtblItems.Rows.Clear();

// Create Connection

SqlConnection conn = new SqlConnection();

conn.ConnectionString = connStr;

// Create Data Adapter

SqlDataAdapter sqlDA = new SqlDataAdapter(cmdString, conn);

// Fill Data Table

sqlDA.Fill(dtblItems);

// Close Connection

conn.Dispose();

conn.Close();

} // end GetItemNames()

ثم فى الحدث الخاص بال Form_Load هتقوم بإستدعاء هذه ال Method التى تقوم بملىء ال DataTable ببيانات اسماء الأصناف و تقوم بكتابة الأكواد التالية

GetItemNames();

foreach (DataRow dtRow in dtblItems.Rows)

{

dgvCmbx.Items.Add(dtRow[0]);

} // end foreach

DataGridViewName.Columns.Add(dgvCmbx);

DataGridViewName.Columns.Add("price column name", "price column header text")

DataGridViewName.Columns.Add("count column name", "count column header text")

DataGridViewName.Columns.Add("total column name", "total column header text")

بمعنى أخر حضرتك هيكون لزام عليك إضافة كل أعمدة ال DataGridView اثناء ال Runtime

اما بالنسبه إنه لأختيارك اسم الصنف فيحضر لك بيانات سعره ف كل ما عليك هو إنك هتقوك بعمل Method تعطيها اسم الصنف ك parameter و رقم الصف الذى اخترت فيه اسم الصنف من ال ComboBox فتقوم هى بإرجاع فيمته السعرية و تضعها فى ال DataGridViewColum الخاص بالسعر و ذلك عن طريق استدعاء هذه ال Method فى الحدث DataGridView_CellEndEdit

لنقل إن العمود الذى سيكون به إسم الصنف هو العمود رقم 0 فى ترتيب الأعمدة بال DataGridView قم بإضافة الأكواد التاليه فى الحدث DataGridView_CellEndEdit

if (e.ColumnIndex == 0)

{

ReturnItemPrice(DataGridViewName[e.ColumnIndex, e.RowIndex].Value.ToString(), e.RowIndex);

}

تم تعديل هذه المشاركة بواسطة Amr_Mohammed_R في 7 سبتمبر 2012 في 05:33

#8

الاخ الكريم Amr_Mohammed_R

بجد مش عارف اشكر ازاى

جزاك الله خيرا

باذن الله بكرة اجرب الكود ده وانا حاسس انه باذن الله يشتغل

الف شكر ليك مرة تانية

#9

انا جربت المهاردة وكله زى الفل بس جت اجرب اخر حاجة ReturnItemPrice عمل ايرور وانا مش فاهم احله ازاى بصراحة

وياريت بقى بعدها اخر طلب تقولى ازاى ااقدر اعمل عمليات حسابيه على الجريد فيو (اجمع عمودين - او اضربهم )

والف شكر ليك مرة تانية

#10
casperdino كتب:

انا جربت المهاردة وكله زى الفل بس جت اجرب اخر حاجة ReturnItemPrice عمل ايرور وانا مش فاهم احله ازاى بصراحة

وياريت بقى بعدها اخر طلب تقولى ازاى ااقدر اعمل عمليات حسابيه على الجريد فيو (اجمع عمودين - او اضربهم )

والف شكر ليك مرة تانية

أخى الكريم ReturnItemPrice هى عباره عن method تعرفها بتأخذ 2 من المتغيرات الأول من نوع string و الثانى من نوع int. داخل هذه ال method ستقوم بفتح اتصال بقاعدة البيانات و عن طريق اسم الصنف فى جملة ال query هتأتى بسعره و بعد ما تغلق الأتصال بقاعدة البيانات هتكتب سعر الصنف أنا أسف فى التأخير عليك فى الرد. عالعموم أنا هقوم بعمل التكويد كله لك و هرسله لك فى رد و إن شاء الله يعمل بشكل جيد.

ما الغرض من جمع عمودين أوا ضربهم الموضوع على العموم ليس بالمشلكة لكن لو تكرمت و قولت لى الغرض قد افيدك بشكل أفضل :)

انتظر ردى بعد ساعات قليله بإذن الله.

#11

السلام عليكم

فى البداية اطلب منك فقط التركيز فيما سأكتبه

هفترض معك فى البداية, و افتراضى لعدم معرفتى بما لديك, إنك هناك جدول يسمى على سبيل المثال Items فى قاعدة البيانات لديك و هذا الجدول حقوله هى الأتى ItemCode - ItemName - ItemPrice

أولا هتقوم بعمل Method هى المسئولة عن إعادة سعر الصنف من قاعدة البيانات و وضعها فى مكانها الصحيح فى الخانة المحدد لها عند اختيارك لأسم الصنف من ال DataGridViewComboBox. و سوف نطلق على هذه ال Method هذا الأسم ReturnItemPrice من نوع void

void ReturnItemPrice(string itemName, int dgvRowIndex)

{

// Create connection object

SqlConnection conn = new SqlConnection("put here you connection string to the data base");

// Create command string

string cmdString = @"SELECT ItemPrice FROM Items WHERE ItemName=@Param1";

// Create command object

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;

cmd.CommandText = cmdString;

cmd.Parameters.Add("@Param1",SqlDbType.NVarChar).Value = itemName;

try

{

// Open connection

conn.Open();

if (conn.State != ConnectionState.Open)

{

MessageBox.Show("لقد وقع خطأ, اثناء محاولة الأتصال بقاعدة البيانات", "خطأ فى الأتصال", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);

return;

} // end if

else

{

DataGridViewName["put here in numbers the column number you specified for item price", dgvRowIndex].Value =cmd.ExecuteScalar().ToString();

// Close connection

conn.Dispose();

conn.Close();

} // end else

} // end try

catch

{

DataGridViewName["put here in numbers the column number you specified for item price", dgvRowIndex].Value = String.Empty;

// Close connection

conn.Dispose();

conn.Close();

} // end catch

}

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

تم تعديل هذه المشاركة بواسطة Amr_Mohammed_R في 12 سبتمبر 2012 في 09:17

#12

فى حالة وجود اية مشكلة مرة ثانية ارجو منك إرسال لى

1- صورة من النافذة المصممة و ترتيب ظهور البيانات فى ال DataGridView بمعنى ترتيب الأعمدة على سبيل المثال "اسم المنتج, سعره, إلخ...".

2- اسم جدول قاعدة البيانات الموجود به البيانات الخاصة بإسم المنتج و سعره و مع الأسم طبعا تكتب لى تركيب الجدول على سبيل المثال "اسم الجدول فرضا Items و تركيبه ItemID - ItemName - ItemPrice إلخ... "

3- ال Connection String الموجود لديك و الذى يصلك بقاعدة البيانات

4- الهدف من النافذة بشكل تفصيلى

#13

اخى الكريم

اولا جزاك الله خيرا

ثانيا لسه المشكلة موجودة عموما انا رفعت البرنامج على الميديا فير وده لينك التحميل

Download

فى انتظار ردك

#14

السلام عليكم. كان لديك مشكلتين تم حلهم و عدلت لك تعديلات بسيطه فى البرنامج ارجو إنها تعجبك. و نصيحة عندما تختار مسميات لل controls لديك حاول إن المسميات فى البداية تأخذ اختصار لنوعية ال control على سبيل المثال لو ال control عبارة عن textbox اجعل بداية الإسم تبدأ ب tb ثم تتبعها بالأسم, و أن تكون مسمياتك مترادفة على سبيل المثال أنت كاتب "الكمية" ثم بجانبها وضعت textbox اعطيته اسم invNum و هذا الأسم غير مطابق لما تريد وضعه به فما تريد وضعه به هو قيمة الكمية وبالتالى اسم ال textbox مفترض أن يكون tbAmount

عالعموم جرب و بلغنى و إن شاء الله كل شىء يعمل بشكل جيد الأن و عن تجرية شخصية لى.

رابط التحميل

تم تعديل هذه المشاركة بواسطة Amr_Mohammed_R في 16 سبتمبر 2012 في 14:29

#15

بجد يابشمهندس عمرو مش عارف اشكرك ازاى ده اولا طبعا

دلوقتى الكود اشتغل والتعديلات اللى حضرتك عاملها بجد تحفة فنيه انا فتحت البرنامج وجربت وكله اشتغل والاضافات هايلة ومفيدة

ثانيا انا فعلا لما هابدا اغير اسماء الكنترول كلها واظبطها

وعلى فكرة لسه هحتاجاك فى حجات تانيةsmile.gif

ثالثا كنت عايز من حضرتك بقى شويه ايكونات صغيرة كده زى اللى انت مستخدمها (حذف اضافة تعديل بحث)

بجد جزاك الله خيرا

#16
casperdino كتب:

بجد يابشمهندس عمرو مش عارف اشكرك ازاى ده اولا طبعا

دلوقتى الكود اشتغل والتعديلات اللى حضرتك عاملها بجد تحفة فنيه انا فتحت البرنامج وجربت وكله اشتغل والاضافات هايلة ومفيدة

ثانيا انا فعلا لما هابدا اغير اسماء الكنترول كلها واظبطها

وعلى فكرة لسه هحتاجاك فى حجات تانيةsmile.gif

ثالثا كنت عايز من حضرتك بقى شويه ايكونات صغيرة كده زى اللى انت مستخدمها (حذف اضافة تعديل بحث)

بجد جزاك الله خيرا

ضيف فقط هذا الجزء من الكود فى حدث ال Form_Load فى نافذة إصدار الفواتير

dgvCmbx.FlatStyle = FlatStyle.Flat;

غير خطوط ال Labels كلها عند إلى Times New Roman; 11.25pt; style=Bold اما ال button ف غير الخط إلى Traditional Arabic; 14.25pt; style=Bold, Italic و عالعموم أنا هرسل لك نسخة تانيه عدلت بها بعض الأشياء الشكلية فقط.

رابط التحميل

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

Icon Finder

Find Icons

فى النهاية لماذا لا تجعل ال DataGirdView فقط و تضع بها كافة البيانات بدلا من ال ComboBox الذى تضعه بالأعلى هو و ال textboxes التى يدخل فيها قيمة الكمية و الإجمالى اعتقد إنها تكون أفضل لو كانت كل هذه الأشياء موجوده فى ال DataGridView يعنى يكون هيئة ال DataGridView كالتالى

اسم الصنف - سعر الوحدة - الكمية - الإجمالى

و جزء إضافة الألة الحاسبة الأفضل إنه يكون فى نافذة إصدار الفواتير ك button هذا من ناحية إنك اريد إضافة الألة الحاسبة, من جهه ثانية لماذا لا تجعل البرنامج يقوم هو من الداخل بكل الحسابات و ما على المستخدم إلا إنه يدخل قيم فقط يعنى على سبيل المثال عندما يخرج له سعر الوحدة من الصنف ثم يكتب الكمية يقوم البرنامج من تلقاء نفسه بوضع قية الإجمالى و هو حاصل ضرب سعر الوحدة فى الكمية و كذلك سعر الضريبة إلخ... يعنى كل شىء يكتب يحسب بواسطة البرنامج؟

تم تعديل هذه المشاركة بواسطة Amr_Mohammed_R في 16 سبتمبر 2012 في 22:04

#17

على فكرة التعديل التانى احلى كمان من الاول

وبالمناسبه هو ده اللى انا ناوى اعمله فى Grid View واخليها بالشكل ده (اسم الصنف - سعر الوحدة - الكمية - الإجمالى)

بس فى الاول كنت بجرب انى اربط الاصناف بالكومبو بوكس عشان اتاكد ان الاسعار بتظهر فى التيكست بوكس (بينى وبينك مكنتش عارف اظبطها فى الجريد فيو blink.gif)

بس اللى عايز اعرفه ازاى اضرب السعر * الكمية من الاعمدة فى Grid View

#18
casperdino كتب:

على فكرة التعديل التانى احلى كمان من الاول

وبالمناسبه هو ده اللى انا ناوى اعمله فى Grid View واخليها بالشكل ده (اسم الصنف - سعر الوحدة - الكمية - الإجمالى)

بس فى الاول كنت بجرب انى اربط الاصناف بالكومبو بوكس عشان اتاكد ان الاسعار بتظهر فى التيكست بوكس (بينى وبينك مكنتش عارف اظبطها فى الجريد فيو blink.gif)

بس اللى عايز اعرفه ازاى اضرب السعر * الكمية من الاعمدة فى Grid View

انا هعمل لك شىء و ارسله لك لكن أنا مشغول حاليا لكن هضبط لك الموضوع بشكل كبير و هضع لك كومنت مع الأكواد لترشدك إلى كيف تم عمل مثل هذه الأكواد.

#19

بجد مش عارف ااقولك ايه تانى

بس انا مش عايز اتعبك لو وراج شغل او حجات تانية اهم متتعبش نفسك

#20

السلام عليكم

أنا تأخرت عليك لكن و الله مشغول جدا هذه الأيام لبدىء فى تسليم جزء من مشروع ال ERP للشركة التى اعمل لديها

أنا بدأت لك ببعض أشياء بسيطة كلما انتهيت من بعض الأعمال سأكمل لك شيئا ف شيئا بإذن الله

أولا قم بفتح ملف ال Notepad المرسل لك مع البرنامج ثم فك الضغط و قم بتشغيل البرنامج و ارجو ان ينال إعجابك

Cafe Management

Users.txt

تم تعديل هذه المشاركة بواسطة Amr_Mohammed_R في 23 سبتمبر 2012 في 16:50

#21

اولا كان الله فى عونك ياخى الكريم

ثانيا ماشاء الله ولا حول ولا قوة الا بالله على المشروع الهائل والتنسيق الجميل

ثالتا جزاك الله خيرا

رابعا انا كنت عايز ايميلك الشخصى لو امكن عشان احتمال احتاجك فى شغل خاص قريبا

#22
casperdino كتب:

اولا كان الله فى عونك ياخى الكريم

ثانيا ماشاء الله ولا حول ولا قوة الا بالله على المشروع الهائل والتنسيق الجميل

ثالتا جزاك الله خيرا

رابعا انا كنت عايز ايميلك الشخصى لو امكن عشان احتمال احتاجك فى شغل خاص قريبا

البريد الألكترونى الخاص بى

amr_Moh3mmed@hotmail.com

amr_Moh3mmed@yahoo.com

أنا ضبط لك بعض الأشياء كإضافة صنف, تعديل صنف و حذف صنف. لكن أنا عن جد لم اتعامل مع ال Access من قبل و الجمل الخاصة بالإضافة, التعديل و الحذف تعمل دون مشكلة لكن دون تأثير فى قاعدة البيانات. اترك لك هذا الحل :). أنا وضعت لك رابط الجزء الجديد من البرنامج.

Cafe Management

مواضيع مشابهة