بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين
السلام عليكم ورحمة الله وبركاته
وصلى الله على محمد وآله الطاهرين
السلام عليكم ورحمة الله وبركاته
سنقوم في هذا الموضوع ببناء برنامج يقوم بطباعة تقرير من خلال فئة ( أي ان مصدر البيانات ستكون Object )
اولا سنقوم ببناء Class اسمه StudentsInfo من خلال Project--->AddClass بالشكل التالي:
C#
PHP كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ReportFromObject
{
public class StudentsInfo
{
// تسلس الطالب
public int S_ID
{ set; get; }
// اسم الطالب
public string S_FName
{ set; get; }
// تاريخ ولادة الطالب
public DateTime S_BDate
{ set; get; }
// عنوان الطالب
public string S_Address
{ set; get; }
}
}
VB
PHP كود :
Public Class StudentsInfo
' تسلس الطالب
Public Property S_ID() As Integer
Get
Return m_S_ID
End Get
Set(value As Integer)
m_S_ID = value
End Set
End Property
Private m_S_ID As Integer
' اسم الطالب
Public Property S_FName() As String
Get
Return m_S_FName
End Get
Set(value As String)
m_S_FName = value
End Set
End Property
Private m_S_FName As String
' تاريخ ولادة الطالب
Public Property S_BDate() As DateTime
Get
Return m_S_BDate
End Get
Set(value As DateTime)
m_S_BDate = value
End Set
End Property
Private m_S_BDate As DateTime
' عنوان الطالب
Public Property S_Address() As String
Get
Return m_S_Address
End Get
Set(value As String)
m_S_Address = value
End Set
End Property
Private m_S_Address As String
End Class
ثانيا المتغيرات العامة:
C#
PHP كود :
private List<StudentsInfo> std = new List<StudentsInfo>();
private int id = 1;
public Form1()
{
InitializeComponent();
id_txt.Text = id.ToString();
}
VB
PHP كود :
Private std As New List(Of StudentsInfo)()
Private id As Integer = 1
Sub New()
' This call is required by the designer.
InitializeComponent()
id_txt.Text = id.ToString()
' Add any initialization after the InitializeComponent() call.
End Sub
ثالثا: اضافة معلومات الطالب الى القائمة نكتبها في زر الاضافة:
C#
PHP كود :
std.Add(new StudentsInfo
{
S_ID = id,
S_FName = name_txt.Text,
S_Address = addr_txt.Text,
S_BDate = DateTime.Parse(dob_txt.Text)
});
id_txt.Text = (++id).ToString();
name_txt.Text = dob_txt.Text = addr_txt.Text = "";
VB
PHP كود :
std.Add(New StudentsInfo() With { _
.S_ID = id, _
.S_FName = name_txt.Text, _
.S_Address = addr_txt.Text, _
.S_BDate = DateTime.Parse(dob_txt.Text) _
})
id = id + 1
id_txt.Text = id
name_txt.Text = ""
addr_txt.Text = ""
dob_txt.Text = " "
رابعا: اضف نموذج جديد الى المشروع وقم بتسميته ReportForm بعدها قم باضافة أداة ReportViewer من صندوق الادوات الى النموذج بعدها نقوم بتصميم التقرير واختيار مصدر البيانات باتباع الخطوات التالية:
نختار Object لتكون مصدرا للبيانات
ثم نختار الفئة التي انشأناها كما في الشكل التالي
وغير شكل التقرير الى الذي تريد
بعدها تقوم بسحب الحقول الى RawGroups وغير شكل التقرير الى الذي الشكل تريدالان من أداة الReportViewer اختر التقرير ستلاحظ ان أداة اخرى اضيفت بشكل تلقائي الى النموذج باسم StudentsInfoBindingSource و وظيفة هذه الاداة هي اسناد مصدر البيانات اليهااجعل خاصية الModifire للأداة ولReportViewer يساوي Publicوكتب الكود التالي في زر الطباعة:
C#
PHP كود :
//std.Sort((x, y) => (x.S_FName.CompareTo(y.S_FName)));
//or
std.OrderBy(name => name.S_FName);
ReportForm repf = new ReportForm();
repf.StudentsInfoBindingSource.DataSource = std;
repf.reportViewer1.RefreshReport();
repf.Show();
VB
PHP كود :
'std.Sort(Function(x, y) (x.S_FName.CompareTo(y.S_FName)))
'or
std.OrderBy(Function(name) name.S_FName)
Dim repf As New ReportForm()
repf.StudentsInfoBindingSource.DataSource = std
repf.reportViewer1.RefreshReport()
repf.Show()
كما تلاحظون قمنا باستخدام تقنية Linq لترتيب القائمة حسب الاسم ومن ثم اسناد القائمة الى StudentsInfoBindingSource
الملفات في المرفقات
اتمنى ان يفيدكم المثال
ولا تنسونا و والدي بالدعاء