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

لم أجد TableStyles لل DataGridView في زمن التصميم ؟

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

سلام عليكم :

بصراحة عندي مشكلة صغيرة أد كده () ..

وهي أنني بحاجة TableStyles في زمن التصميم لتجنب كتابة كود كبير من أجل كل DataView ..

ولم أجد طلبي في DataGridView فهل من أداة بديلة أو حل لهذه المشيكلة ؟ :(

تم تعديل هذه المشاركة بواسطة AboOmer_ozn في 13 نوفمبر 2006 في 22:07

#2

السلام عليكم

لم يعد TableStyles مدعم في النسخة 2005 واستبدل بالخاصية Columns منها تستطيع تهيئة الاعمدة كأنواع لقيمها أو تهيئتها على حسب المتطلب

والله أعلم.

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

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

#3

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

أخي الكريم code hunter يمكن عمل فورمات إدخال لكل عمود من الشبكة على حدى ..

عن طريق الخاصية DefaultCellStyle .. سيظهر لك مربع حوار فيه Format ..

ستجدها في خصائص كل عمود طبعاً بعد أن تقتح الخاصية Columns للشبكة ..

بالتوفيق .. :)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#4

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

أخي الكريم هناك طرق كثيرة لحل مشكلة مثل التي تواجهك و باستخدام DataGridView نفسها ..

إليك طريقتين :

الأولى : أن أستخدم الحدث CellValueChanged للشبكة لفحص القيمة التي تم إدخالها في الخلية ..

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

الثانية :

أن أجعل الحقل المطلوب تفحص قيمه يظهر على شكل أزرار في الشبكة وعند النقر على زر إحدى الخلايا ..

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

فإذا كانت صحيحة أرسلها إلى الخلية المستهدفة وإلا لا أرسلها ...

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

أنصحك بها ;)

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة imadouzoun في 15 نوفمبر 2006 في 01:10

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#5

السلام عليكم

يا صائد الاكواد عليك بالتمعن و القراءة في ما يعرف بـ Custom Column Style تجد امثل كثيرة في ال msdn

وهو ان تقوم بعمل عامود من نوع رقمي لا يقبل غير ذلك ثم تقوم بعملية دمج لهذا العامود للشبكية DGV.

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

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

فإذا كانت صحيحة أرسلها إلى الخلية المستهدفة وإلا لا أرسلها ...

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

اقول احسن الله إليك , لقد جعلت المستخدم يقوم بثلاثة حركات كلما اراد ان يدخل تاريخ ما , وهذا غير مقبول في منطق الاستخدامية Usability

كذلك استبدلت السهل بما هو دونه فمنطق السهولة كذلك مطلوب accessibility

تخيل لو اراد ان يدخل 100 تاريخ فسيقوم بثلاثة مائة حركة و ال 1000 ب 3000 حركة

وهذا يعني 1000 تساوي 3 ساعات زائد 2000 حركة اضافية تساوي 3 ساعات وقت ضائع

فلا أظن كما ظننت انها كانت جداً فعالة.

اقتباس
أنصحك بها

أما انا فلا انصحك بها إطلاقاً.

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

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

#6

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

اقتباس
اخي imadouzoun

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

ما رأيك بهذا الرابط :

http://msdn2.microsoft.com/en-us/library/7tas5c80.aspx

قم بالإطلاع عليه ثم قل لي ما رأيك ;)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#7

السلام عليكم

اقتباس
ما رأيك بهذا الرابط :

http://msdn2.microsoft.com/en-us/library/7tas5c80.aspx

هذا الكود يحتاج لبعض التعديل لجعلة أقوى مما هو عليه, على سبيل المثال:

في الـ CalendarCell Class نقوم بتعديل التالي:

 Public Sub New()
		' Use the short date format.
		Me.Style.Format = "dd/MM/yyyy"
	End Sub

ثم نضع شرط التحقق من القيمة قبل تحويلها بهذا الشكل:

 If Not Me.Value.Equals(DBNull.Value) Then
			ctl.Value = CType(Me.Value, DateTime)
		End If

أخيراً في المنطقة : CalendarEditingControl نجعل نوع القيمة على اساس تاريخ رقمي short بهذا الشكل:

 Public Sub New()
		Me.Format = DateTimePickerFormat.Short
	End Sub 'New

و الكود بالشكل النهائي سيكون بهذا الشكل و الاسلوب:

mports System
Imports System.Windows.Forms

#Region "CalendarColumn Class"
Public Class CalendarColumn
	Inherits DataGridViewColumn

	Public Sub New()
		MyBase.New(New CalendarCell())
	End Sub 'New


	Public Overrides Property CellTemplate() As DataGridViewCell
		Get
			Return MyBase.CellTemplate
		End Get
		Set(ByVal value As DataGridViewCell)
			' Ensure that the cell used for the template is a CalendarCell
			If Not (value Is Nothing) And Not value.GetType().IsAssignableFrom(GetType(CalendarCell)) Then
				Throw New InvalidCastException("Must be a CalendarCell")
			End If
			MyBase.CellTemplate = value
		End Set
	End Property
End Class
#End Region

#Region "CalendarCell Class"
Public Class CalendarCell
	Inherits DataGridViewTextBoxCell


	Public Sub New()
		' Use the short date format.
		Me.Style.Format = "dd/MM/yyyy"
	End Sub


	Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, ByVal initialFormattedValue As Object, ByVal dataGridViewCellStyle As DataGridViewCellStyle)
		MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle)
		Dim ctl As CalendarEditingControl = CType(DataGridView.EditingControl, CalendarEditingControl)
		If Not Me.Value.Equals(DBNull.Value) Then
			ctl.Value = CType(Me.Value, DateTime)
		End If
	End Sub


	Public Overrides ReadOnly Property EditType() As Type
		Get
			' Return the type of the editing contol that CalendarCell uses.
			Return GetType(CalendarEditingControl)
		End Get
	End Property


	Public Overrides ReadOnly Property ValueType() As Type
		Get
			' Return the type of the value that CalendarCell contains.
			Return GetType(DateTime)
		End Get
	End Property


	Public Overrides ReadOnly Property DefaultNewRowValue() As Object
		Get
			' Use the current date and time as the default value.
			Return DateTime.Now
		End Get
	End Property
End Class
#End Region

#Region "CalendarEditingControl Class"
Class CalendarEditingControl
	Inherits DateTimePicker
	Implements IDataGridViewEditingControl

	Private dataGridViewControl As DataGridView
	Private valueIsChanged As Boolean = False
	Private rowIndexNum As Integer


	Public Sub New()
		Me.Format = DateTimePickerFormat.Short
	End Sub 'New

	' Implements the IDataGridViewEditingControl.EditingControlFormattedValue property.
	Public Property EditingControlFormattedValue() As Object Implements IDataGridViewEditingControl.EditingControlFormattedValue
		Get
			Return Me.Value.ToShortDateString()
		End Get
		Set(ByVal value As Object)
			If TypeOf value Is [String] Then
				Me.Value = DateTime.Parse(CStr(value))
			End If
		End Set
	End Property


	' Implements the IDataGridViewEditingControl.GetEditingControlFormattedValue method.
	Public Function GetEditingControlFormattedValue(ByVal context As DataGridViewDataErrorContexts) As Object Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
		Return Me.Value.ToShortDateString()
	End Function 'GetFormattedValue


	' Implements the IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
	Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As DataGridViewCellStyle) Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
		Me.Font = dataGridViewCellStyle.Font
		Me.CalendarForeColor = dataGridViewCellStyle.ForeColor
		Me.CalendarMonthBackground = dataGridViewCellStyle.BackColor
	End Sub 'UseCellStyle

	' Implements the IDataGridViewEditingControl.EditingControlRowIndex property.
	Public Property EditingControlRowIndex() As Integer Implements IDataGridViewEditingControl.EditingControlRowIndex
		Get
			Return rowIndexNum
		End Get
		Set(ByVal value As Integer)
			rowIndexNum = value
		End Set
	End Property


	' Implements the IDataGridViewEditingControl.EditingControlWantsInputKey method.
	Public Function EditingControlWantsInputKey(ByVal key As Keys, ByVal dataGridViewWantsInputKey As Boolean) As Boolean Implements IDataGridViewEditingControl.EditingControlWantsInputKey

		' Let the DateTimePicker handle the keys listed.
		Select Case key And Keys.KeyCode
			Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
				Return True
			Case Else
				Return False
		End Select
	End Function 'IsInputKey


	' Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit method.
	Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean) Implements IDataGridViewEditingControl.PrepareEditingControlForEdit
		' No preparation needs to be done.
	End Sub 'PrepareForEdit

	' Implements the IDataGridViewEditingControl.RepositionEditingControlOnValueChange
	' property.
	Public ReadOnly Property RepositionEditingControlOnValueChange() As Boolean Implements IDataGridViewEditingControl.RepositionEditingControlOnValueChange
		Get
			Return False
		End Get
	End Property

	' Implements the IDataGridViewEditingControl.EditingControlDataGridView property.
	Public Property EditingControlDataGridView() As DataGridView Implements IDataGridViewEditingControl.EditingControlDataGridView
		Get
			Return dataGridViewControl
		End Get
		Set(ByVal value As DataGridView)
			dataGridViewControl = value
		End Set
	End Property

	' Implements the IDataGridViewEditingControl.EditingControlValueChanged property.
	Public Property EditingControlValueChanged() As Boolean Implements IDataGridViewEditingControl.EditingControlValueChanged
		Get
			Return valueIsChanged
		End Get
		Set(ByVal value As Boolean)
			valueIsChanged = value
		End Set
	End Property

	' Implements the IDataGridViewEditingControl.EditingPanelCursor method.
	Public ReadOnly Property EditingPanelCursor() As Cursor Implements IDataGridViewEditingControl.EditingPanelCursor
		Get
			Return MyBase.Cursor
		End Get
	End Property


	Protected Overrides Sub OnValueChanged(ByVal eventargs As EventArgs)
		' Notify the DataGridView that the contents of the cell
		' have changed.
		valueIsChanged = True
		Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
		MyBase.OnValueChanged(eventargs)
	End Sub 'OnValueChanged
End Class 'CalendarEditingControl
#End Region

و بالله التوفيق

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

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…