سلام عليكم :
بصراحة عندي مشكلة صغيرة أد كده () ..
وهي أنني بحاجة TableStyles في زمن التصميم لتجنب كتابة كود كبير من أجل كل DataView ..
ولم أجد طلبي في DataGridView فهل من أداة بديلة أو حل لهذه المشيكلة ؟ :(
سلام عليكم :
بصراحة عندي مشكلة صغيرة أد كده () ..
وهي أنني بحاجة TableStyles في زمن التصميم لتجنب كتابة كود كبير من أجل كل DataView ..
ولم أجد طلبي في DataGridView فهل من أداة بديلة أو حل لهذه المشيكلة ؟ :(
تم تعديل هذه المشاركة بواسطة AboOmer_ozn في 13 نوفمبر 2006 في 22:07
السلام عليكم
لم يعد TableStyles مدعم في النسخة 2005 واستبدل بالخاصية Columns منها تستطيع تهيئة الاعمدة كأنواع لقيمها أو تهيئتها على حسب المتطلب
والله أعلم.
تم تعديل هذه المشاركة بواسطة الغملاسي في 13 نوفمبر 2006 في 23:58
في المثال يتضح المقال
السلام عليكم ورحمة الله وبركاته :
أخي الكريم 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
السلام عليكم ورحمة الله وبركاته :
أخي الكريم هناك طرق كثيرة لحل مشكلة مثل التي تواجهك و باستخدام 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
السلام عليكم
يا صائد الاكواد عليك بالتمعن و القراءة في ما يعرف بـ Custom Column Style تجد امثل كثيرة في ال msdn
وهو ان تقوم بعمل عامود من نوع رقمي لا يقبل غير ذلك ثم تقوم بعملية دمج لهذا العامود للشبكية DGV.
اقول احسن الله إليك , لقد جعلت المستخدم يقوم بثلاثة حركات كلما اراد ان يدخل تاريخ ما , وهذا غير مقبول في منطق الاستخدامية Usabilityاقتباسالثانية :أن أجعل الحقل المطلوب تفحص قيمه يظهر على شكل أزرار في الشبكة وعند النقر على زر إحدى الخلايا ..أفتح له مربع حوار أنشئه بنفسي وفيه أختبر القيمة المدخلة ومن ثم يضغط على موافق ...
فإذا كانت صحيحة أرسلها إلى الخلية المستهدفة وإلا لا أرسلها ...
لقد استخدمت الطريقة الثانية لإدخال تواريخ في أحد برامجي .. وكانت جداً فعالة ..
كذلك استبدلت السهل بما هو دونه فمنطق السهولة كذلك مطلوب accessibility
تخيل لو اراد ان يدخل 100 تاريخ فسيقوم بثلاثة مائة حركة و ال 1000 ب 3000 حركة
وهذا يعني 1000 تساوي 3 ساعات زائد 2000 حركة اضافية تساوي 3 ساعات وقت ضائع
فلا أظن كما ظننت انها كانت جداً فعالة.
اقتباسأنصحك بها
أما انا فلا انصحك بها إطلاقاً.
السلام عليكم.
في المثال يتضح المقال
السلام عليكم ورحمة الله وبركاته :
اقتباساخي 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
السلام عليكم
اقتباسما رأيك بهذا الرابط :
هذا الكود يحتاج لبعض التعديل لجعلة أقوى مما هو عليه, على سبيل المثال:
في الـ 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و بالله التوفيق
في المثال يتضح المقال
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…