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

سؤال حول DataGridView

مغلق
بدأه akuwait في 9 نوفمبر 2006 · 12 رد · 1,566 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ارجوا من الاخوة الاعضاء المساعدة في عرض محتويات DataGridView داخل textbox

لدي كشف بأسماء الموظفين معروض في DataGridView وهو رقم الموظف اسم الموظف الوظيفه وعند الضغط على احد الموظفين يتم عرض رقم الموظف في textbox1 و الاسم في textbox2 والوظيفه في textbox3

وشكرا لكم

#2

السلام عليكم

في حدث الضغط على الخلية قم بالتالي :

 Private objCell As Object = Nothing

Private Sub MainDataGridView_CellClick( _
	ByVal sender As Object, _
	ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _
	Handles MainDataGridView.CellClick

		'Note: DataGridViewTextBoxColumn3 is the name of DataGridView Column
		'Not the Data table column name ...
		If Me.MainDataGridView.Columns(e.ColumnIndex).Name = "DataGridViewTextBoxColumn3" Then
			objCell = Me.MainDataGridView.CurrentCell.Value
			Me.txtGetData.Text = objCell.ToString
		End If

كما تلاحظ نتحقق أولاً نحن على اي عامود في الـ Datagridview ثم إذا تحقق الشرط ننشئ متغير من نوع object

لنسند فيه قيمة الخلية الحالية ثم نسندها إلى اي خانة نصية

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

مع العلم أن الخاصية Value ترجع القيمة التي سيتم حفظها في قاعدة البيانات و الخاصية FormattedValue سترجع القيمة التي ستعرض للمستخدم

هذا الكلام ينطبق على القوائم المنسدلة بشكل خاص,

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

هذا والله أعلم.

في المثال يتضح المقال

#3

شكرا لك اخي الكريم على المشاركة

قمت بتطبق الكود ولكن لم تنجح الطريقة ارجوا ان استطعت ارفاق مثال للكود

وشكرا لك

#4

السلام عليكم

المرفق للتجربة و التطبيق.

DataGridViewClickEvent.rar

تم تعديل هذه المشاركة بواسطة الغملاسي في 26 نوفمبر 2006 في 23:01

في المثال يتضح المقال

#5

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

TextBox1.Text = Me.DataGridView1.CurrentRow.Cells(0).Value.ToString
TextBox2.Text = Me.DataGridView1.CurrentRow.Cells(1).Value.ToString

شكرا لك على المساعده

#6

أخي العزيز الغملاسي

كلما احاول ان احمل المثال تظهر رسالة من المنتدى أن الملف غير موجود

وهذا هو نص الرسالة

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

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

والسلام خير ختاااام

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#7

السلام عليكم

تم أضافة المرفق من جديد.

في المثال يتضح المقال

#8

مشكووور أخي الكريم

بارك الله فيك

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#9

السلام عليكم

-------------

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

اليك أخي الكريم ما قمت به

Sub deleteMultiRows()
		Dim DeleteCustomersTableAdapter As New DSMainTableAdapters.CustomersTableAdapter
		Dim DeleteCustomerDataTable As New DSMain.CustomersDataTable

		For Each CurrentCustomerRow As DSMain.CustomersRow In DeleteCustomerDataTable.Rows
			CurrentCustomerRow.Delete()
			Exit For
		Next
		DeleteCustomersTableAdapter.Update(DeleteCustomerDataTable)
		Call UpdateData()
	End Sub

وبالنسبة إلى عملية update فهي كالتالي

Sub UpdateData()
		Try
			Me.Validate()
			Me.CustomersBindingSource.EndEdit()
			Me.CustomersTableAdapter.Update(Me.DSMain.Customers.Select("", "", DataViewRowState.Added Or DataViewRowState.ModifiedCurrent Or _
		   DataViewRowState.Deleted))
		Catch SqlExc As SqlClient.SqlException
			MessageBox.Show(SqlExc.Message)
		Catch GenExc As Exception
			MessageBox.Show(GenExc.Message)
		End Try
	End Sub

ما هو الخطأ في ذلك واليك الملف المرفق

--------

والسلام خير ختااام

DataGridViewClickEvent_Update.zip

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#10

السلام عليكم

----------------

وين ردودكم اخواني

هل أضعه في موضوع مستقل لكي يراه الجميع

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#11

السلام عليكم

حياك الله أخي العزيز بالنسبة للكود في الاعلى

هنالك بعض المنطق الغير مقبول و هو مطول إلى حدٍ ما

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

على كل حال منطق الحذف من الـ DataGridView وفقاً لاختيار المستخدم على الصفوف Selection of Rows فإليك ذلك.

 Try

			'If there is remaining row.
			If Me.MainDataGridView.Rows.Count >= 0 Then

				'Loop through all of selected Rows.Count
				For Each SelectedRow As DataGridViewRow In MainDataGridView.SelectedRows

					'Remove all of selected Rows.
					MainDataGridView.Rows.Remove(SelectedRow)

				Next

			End If
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try

و إذا الطلب غير ذلك , فقط أشر و آمر يا طيب

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

في المثال يتضح المقال

#12

حياك الله أخي الكريم

مشكووور على كلامك الطيب .....فالكلام الطيب لا يخرج من اهل الطيب

على كلا ....

فانا أخطأت فعلا في كتابة الكود السابق فقد نسيت وأرسلت الملف الخاطئ وليس ما أردته فقد كنت عامل كلاس تاخذ القيمة وأقارنها ع القيمة الموجودة ومن ثم احذف الصفوف التي اريدها

ولكن قدر الله وما شاء فعل

على كلا انا هلا مش على جهازي لكن عندما أذهب للبيت واجلس على جهازي ارسله لكم ان شاء الله ..

بس عندي سئوال أخي الكريم الا وهو ..... ؟؟

عند الحذف سجل او أكثر اريد من قاعدة البيانات (مثلا الخاصة بالموظفين الذين يعملون على البرنامج ) اريد ان اتأكد ان الشخص الذي يتم حذفه من قاعدة البيانات ان يرسل لي رسالة ان هذا الشخص له علاقة بجدول كذا .... انا صممت database شيتي على sql server2005 وهنا يبرز لي سئوالين ايضا ؟؟؟

عند الحذف هل اجعل التحقق من data base فهذه انا عملتها ولكن اريد ان اعملها عن طريق vb.net فهل من فكرة عندكم أخواني لذلك .؟؟؟؟؟

وشكرا لك أخي الكريم

------

والسلام خير ختام

تم تعديل هذه المشاركة بواسطة فلسطيننا في 28 نوفمبر 2006 في 20:40

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#13

السلام عليكم

بالنسبة لما ذكرت أخي الكريم.

فالاولى أن يكون عن طريق العلاقة في الـ DataSet أولاً لانها Strong Type بحيث أي جدول كأب مرتبط بأبناء

لن يتم حذف صف فيه إلا إذا تم حذف الصفوف المرتبطة بهي في جدول الابن قبل ذلك.

و من خلال العلاقة كما تعلم تستطيع ان نظهر رسالة خطأ للمستخدم , بعدم قبول عملية الحذف الحالية.

وهذا المنصوح به في كل الاحوال

اما عبر الكود,فهو سهل للغاية لسبب وحيد هو انه لا محاله لجدول اي أب أن يكون له أبن أو أبناء دون علاقة

وهذا هو المهم لانه العلاقة تعني ان رقم صف الاب أو بالاحرى Parent Row سيكون في جدول الابناء , اليس كذلك؟

وعلى هذا الاساس سنقوم بحلقة For Statment للبحث عن رقم ID الاب أو الصف بالتحديد row

في جدول الابن فإن وجدنا ما يطابقهُ, فالاب له ابناء , غير ذلك سنمكن عملية الحذف لان صف الاب ليس له ما يربطه من صفوف في جدول الابن

وفي الاخير و إن كانت التجربة منها فوائد جما , إلا انني انصحك مجدداً DataSet أفضل و أقوى من منطقنا.

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

في المثال يتضح المقال

هذا الموضوع مغلق.

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