23-04-20, 05:24 PM
أعتذر عن تأخير الرد
سهلة بإذن الله
خذها خطوة بخطوة
سأشرح لك طريقة بسيطة لتفهم الفكرة مبدئيا ثم تطورها بناء على احتياجاتك
المثال بلغة سي شارب
أولا انشئ كلاس جديد لاستخدامه لسطور الفاتورة وليكن اسمه SalesGridLine
أضف للكلاس الخصائص (properties) التي تريدها مثل رقم الصنف واسم اللصنف وسعر البيع واي شيء آخر تريد ادراجه في اعمدة الفاتورة حتى وان لم يكن موجود في نفس الجدول أو حتى في قاعدة البيانات
في بداية كلاس الفورم أنشئ قائمة جديدة List من الكلاس السابق
هذه القائمة ستكون هي مصدر بيانات الجريد فيو
بناء عليه أضف أعمدة الجريد فيو من المصمم وعدل على خصائص الأعمدة Caption و Field name
في حدث لود الفورم حدد مصدر البيانات
لمسح الصفوف او تجديد مصدر البيانات
نأتي لجزئية إدراج سطر جديد في الفاتورة - (بالأحرى إضافة كائن SalesGridLine إلى القائمة SalesGridDataSource)
أولا اجلب بيانات الصنف الجديد من فورم البحث أو غيره
قبل الإدراج ابحث عن الصنف الجديد في الفاتورة في حالة كان مدرج مسبقا قم بما يناسبك (أوقف العملية أو زد الكمية)
البحث يكون بمعلومية حقل ثابت ويفضل رقم الصنف إن لم يكن متكرر
في حالة لم يكن الصنف مكرر أو كانت الفاتورة خالية من الأسطر
أكمل عملية الإدراج
سهلة بإذن الله
خذها خطوة بخطوة
سأشرح لك طريقة بسيطة لتفهم الفكرة مبدئيا ثم تطورها بناء على احتياجاتك
المثال بلغة سي شارب
أولا انشئ كلاس جديد لاستخدامه لسطور الفاتورة وليكن اسمه SalesGridLine
أضف للكلاس الخصائص (properties) التي تريدها مثل رقم الصنف واسم اللصنف وسعر البيع واي شيء آخر تريد ادراجه في اعمدة الفاتورة حتى وان لم يكن موجود في نفس الجدول أو حتى في قاعدة البيانات
كود :
// - كلاس موديل خاص بسطور فاتورة المبيعات
class SalesGridLine
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string ProductCode { get; set; }
public double ProductQty { get; set; }
public decimal ProductPrice { get; set; }
}في بداية كلاس الفورم أنشئ قائمة جديدة List من الكلاس السابق
كود :
private List<SalesGridLine> SalesGridDataSource;هذه القائمة ستكون هي مصدر بيانات الجريد فيو
بناء عليه أضف أعمدة الجريد فيو من المصمم وعدل على خصائص الأعمدة Caption و Field name
في حدث لود الفورم حدد مصدر البيانات
كود :
SalesGridDataSource = new List<SalesGridLine>();
gridview1.DataSource = SalesGridDataSource;لمسح الصفوف او تجديد مصدر البيانات
كود :
gridview1.DataSource = null;
SalesGridDataSource.Clear();
gridview1.DataSource = SalesGridDataSource;نأتي لجزئية إدراج سطر جديد في الفاتورة - (بالأحرى إضافة كائن SalesGridLine إلى القائمة SalesGridDataSource)
أولا اجلب بيانات الصنف الجديد من فورم البحث أو غيره
قبل الإدراج ابحث عن الصنف الجديد في الفاتورة في حالة كان مدرج مسبقا قم بما يناسبك (أوقف العملية أو زد الكمية)
البحث يكون بمعلومية حقل ثابت ويفضل رقم الصنف إن لم يكن متكرر
كود :
// البحث عن سطر مشابه
for (int i = 0; i < gridview1.DataRowCount; i++)
{
int cellValue = (int)gridview1.GetRowCellValue(i, "ProductId");
if (cellValue == selectedprd.product_id) // قيمة البحث المطابقة للعمود المحدد في السطر السابق
{
// row.Selected = true;
gridview1.FocusedRowHandle = i; // تحديد السطر
line_plus(i); // إضافة كمية
return;
}
}في حالة لم يكن الصنف مكرر أو كانت الفاتورة خالية من الأسطر
أكمل عملية الإدراج
كود :
SalesGridLine x = new SalesGridLine
{
ProductId = product_id,
ProductName = product_name,
ProductCode = product_code,
ProductQty = 1,
ProductPrice = product_price,
};
SalesGridDataSource.Add(x); // إضافة السطر إلى مصدر بيانات الجريدفيو وسيتم تحديثها مباشرة
