Professional Documents
Culture Documents
GridView - in Arabic PDF
GridView - in Arabic PDF
اﺳﺗﺧدام اﻷداة
GridView
ﺗﻌﺗﺑر اﻷداة GridViewﻣن أﻛﺛر أدوات ASP.NETﺗﻧوﻋﺎ ً ﺑﺎﻟﺧﺻﺎﺋص واﻟﻣﮭﺎم اﻟﺗﻲ ﯾﻣﻛن ﺗﻧﻔﯾذھﺎ ﻣن
ﺧﻼﻟﮭﺎ ,ﻓﻲ ھذا اﻟﻔﺻل ﺳﻧﺣﯾط ﺑﺟﻣﯾﻊ اﻟﻣﮭﺎم اﻷﺳﺎﺳﯾﺔ ﻟﮭذه اﻷداة ﺣﯾث ﺑﺎﻹﻣﻛﺎن اﺳﺗﺧداﻣﮭﺎ ﻟﻌرض اﻟﺑﯾﺎﻧﺎت
,ﺗﺣدﯾد اﻟﺑﯾﺎﻧﺎت اﻟﺗﻲ ﺳﯾﺗم ﻋرﺿﮭﺎ ,ﺗرﺗﯾب اﻟﺑﯾﺎﻧﺎت ,ﻋرض اﻟﺑﯾﺎﻧﺎت ﻋﻠﻰ ﻋدة ﺻﻔﺣﺎت ,ﺗﺣرﯾر اﻟﺑﯾﺎﻧﺎت
وﺗﻌدﯾﻠﮭﺎ ,ﻛﻣﺎ ﺳﻧﺗﻌﻠم ﻛﯾﻔﯾﺔ إﺿﺎﻓﺔ أدوات اﻟﺗﺣﻛم اﻷﺧرى ﺿﻣن اﻷداة , GridViewوﻛﯾﻔﯾﺔ اﺳﺗﺧدام أدوات
اﻟﺗﺣﻘق ﻣن اﻟدﺧل ﻣﻊ اﻷداة , GridViewﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﻣﺎﺳﺑق ﺳﺗﻛون ﻟﻧﺎ وﻗﻔﺔ ﻣﻊ ﻛﯾﻔﯾﺔ ﺗﺧزﯾن اﻟﺻور ﻓﻲ
ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت وﻋرﺿﮭﺎ ﻋﻠﻰ ﺻﻔﺣﺎت اﻟوﯾب ,ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﻣواﺿﯾﻊ ﻋدﯾدة ﺳﺗﺗم ﻣﻧﺎﻗﺷﺗﮭﺎ ﺧﻼل ھذا
اﻟﻔﺻل .
ﻣﻼﺣظﺔ
ﻛل ﻓﻘرة ﺿﻣن ھذا اﻟﻔﺻل ھﻲ اﻣﺗداد ﻟﻠﻔﻘرة اﻟﺗﻲ ﺗﺳﺑﻘﮭﺎ ,ﻟذﻟك أرﺟو ﻗراءة ھذا اﻟﻔﺻل ﻣن ﺑداﯾﺗﮫ وﻋدم
اﻟﻘﻔز ﺑﯾن اﻟﻔﻘرات .
ﻛﻣﺎ أﻧﺻﺢ ﺑﻘراءة ﻓﺻل " أﺳﺎﺳﯾﺎت اﻟﺗﻌﺎﻣل ﻣﻊ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت " ﻗﺑل اﻟﺧوض ﻓﻲ ھذا اﻟﻔﺻل .
ﻗﺑل اﻟﺑدء ﺑﻔﻘرات ھذا اﻟﻔﺻل ﯾﺟب ﻋﻠﯾﻧﺎ ﺑﻧﺎء ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت واﻟﺟداول اﻟﺗﻲ ﺳﻧﻘوم ﺑﺎﻟﻌﻣل ﻋﻠﯾﮭﺎ ,ﺗﻌﻠﻣﻧﺎ
ﺧﻼل اﻟﻔﺻول اﻟﺳﺎﺑﻘﺔ ﻛﯾﻔﯾﺔ ﻋﻣل ھذا ,ﺳﻧﻘوم ﺑﺑﻧﺎء ﺟدوﻟﯾن ,اﻟﺟدول اﻷول ﻟﺗﺧزﯾن ﻣﻌﻠوﻣﺎت ﻋن أﻗﺳﺎم
اﻟﺷرﻛﺔ واﻟﺟدول اﻵﺧر ﻟﺗﺧزﯾن ﺑﯾﺎﻧﺎت اﻟﻣوظﻔﯾن ,ﺟدول اﻷﻗﺳﺎم ﯾﺣﻣل اﻻﺳم departmentsوﻟﮫ اﻟﺑﻧﯾﺔ
اﻟﺗﺎﻟﯾﺔ :
-3-
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﺣﯾث إن اﻟﺣﻘل deptIDﻣن اﻟﺟدول employeesﺳﯾﻛون ﺑﻣﺛﺎﺑﺔ ﻣﻔﺗﺎح أﺟﻧﺑﻲ Foreign Keyﻣرﺗﺑط
ﺑﺎﻟﺣﻘل idﻣن اﻟﺟدول ) departmentsﻟم أﻗم ﺑوﺿﻊ ﻗﯾد ﻣﻔﺗﺎح أﺟﻧﺑﻲ ﺿﻣن ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت ﻋﻠﻰ اﻟرﻏم
ﻣن ﺟواز ذﻟك ,إﻧﻣﺎ ﻟم أﺷﺄ إدﺧﺎل اﻟﻘﺎرئ ﺑﺄﻣور ﯾﻔﺗرض أﻧﮭﺎ ﻣن أﺳﺎﺳﯾﺎت ﻗواﻋد اﻟﺑﯾﺎﻧﺎت وﻟﺳت ھﻧﺎ ﺑﺻدد
دراﺳﺔ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت ( .
-4-
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻗم ﺑﺈﻧﺷﺎء ﻣﺟﻠد ﺟدﯾد ﺿﻣن ﻣﺳﺎر اﻟﻣﺷروع اﻟﺣﺎﻟﻲ وﺳﻣﮫ imagesوﺿﻊ ﺑداﺧﻠﮫ ﺧﻣس ﺻور وﻟﺗﻛن
أﺳﻣﺎؤھﺎ ﻣطﺎﺑﻘﺔ ﻷﺳﻣﺎء اﻟﺻور اﻟﺗﻲ أدﺧﻠﻧﺎھﺎ ﻓﻲ اﻟﺟدول اﻟﺳﺎﺑق .ﺑﮭذا ﻧﻛون ﻗد اﻧﺗﮭﯾﻧﺎ ﻣن إﻋداد ﻗﺎﻋدة
اﻟﺑﯾﺎﻧﺎت وأﺻﺑﺣﻧﺎ ﺟﺎھزﯾن ﻟﻠﺑدء ﺑﻔﻘرات ھذا اﻟﻔﺻل .
ﻋرض اﻟﺑﯾﺎﻧﺎت
ﺗﻣﻛﻧﻧﺎ أداة اﻟﺗﺣﻛم GridViewﻣن ﻋرض اﻟﺑﯾﺎﻧﺎت ﻋﻠﻰ ﺻﻔﺣﺔ اﻟوﯾب ﺑﺳﮭوﻟﺔ ﻛﺑﯾرة ,ﺣﯾث ﯾﺗم اﻻﺗﺻﺎل ﻣﻊ
ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت ﺑواﺳطﺔ اﻷداة , SqlDataSourceأﺿف ﺻﻔﺣﺔ ﺟدﯾدة و ﻗم ﺑﺈﺿﺎﻓﺔ اﻷداة GridViewإﻟﯾﮭﺎ
واﻟﺗﻲ ﺗﺟدھﺎ ﺿﻣن اﻟﻘﺳم Dataﺿﻣن ﻧﺎﻓذة اﻷدوات ToolBoxﺛم ﺗﺎﺑﻊ اﻟﺧطوات اﻟﺗﺎﻟﯾﺔ :
-5-
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
-6-
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
-7-
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻛﻣﺎGridView ﺑﺈﻣﻛﺎﻧﻧﺎ ﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ ﻟﺗظﮭر اﻟﺑﯾﺎﻧﺎت ﺿﻣن اﻷداة, ﺑﻌد اﻻﻧﺗﮭﺎء ﻣن اﻟﺧطوات اﻟﺳﺎﺑﻘﺔ
: ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
<asp:BoundField DataField="deptID" HeaderText="deptID"
SortExpression="deptID" />
<asp:BoundField DataField="photo" HeaderText="photo"
SortExpression="photo" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees]" />
</div>
ﺣﯾث ﺳﺗﻘوم ﺑﺟﻠب اﻟﺑﯾﺎﻧﺎتemployees ﻣﻊ اﻟﺟدولSqlDataSource ﻣﺎ ﻗﻣﻧﺎ ﺑﮫ ﻓﻌﻠﯾﺎ ھو رﺑط اﻷداة
وذﻟك ﻋﺑر اﻟﺧﺎﺻﯾﺔSqlDataSource ﻣﻊ ﻣﺻدر اﻟﺑﯾﺎﻧﺎتGridView اﻟﻣﺣددة وﻣن ﺛم ﻗﻣﻧﺎ ﺑرﺑط اﻷداة
. ﻛﻣﺎ ھو ﻣوﺿﺢ ﻓﻲ اﻟﻛود اﻟﺳﺎﺑق واﻟذي ﺳﻧﻘوم ﺑﺷرﺣﮫ ﺑﺎﻟﺗﻔﺻﯾل ﺿﻣن اﻟﻔﻘرات اﻟﻼﺣﻘﺔDataSourceID
-8-
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
اﺧﺘﯿﺎر اﻟﺒﯿﺎﻧﺎت
ﺑﻧﺎءا ﻋﻠﻰ ﻣﺎGridView ﺳﻧﻘوم ﺿﻣن ھذه اﻟﻔﻘرة ﺑﺗوﺿﯾﺢ ﻛﯾﻔﯾﺔ ﺗﺣدﯾد اﻟﺑﯾﺎﻧﺎت اﻟﺗﻲ ﺳﺗﻌرض ﺿﻣن اﻷداة
. آﺧرGridView اﺧﺗﺎره اﻟﻣﺳﺗﺧدم ﺿﻣن
ﻧﻘوم, departments وﻧﻘوم ﺑرﺑطﮭﺎ ﻣﻊ اﻟﺟدولGridView1 ﻧﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة وﻧﺿﯾف إﻟﯾﮭﺎ أداة
اﻟﻘﯾﻣﺔAutoGenerateSelectButton واﻟﺧﺎﺻﯾﺔ, id اﻟﻘﯾﻣﺔDataKeyNames ﺑﺈﻋطﺎء اﻟﺧﺎﺻﯾﺔ
: ﻛﻣﺎ ﯾوﺿﺢ اﻟﻛود اﻟﺗﺎﻟﻲTrue
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AutoGenerateSelectButton="True" DataKeyNames="id"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name"
SortExpression="name" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [id], [name] FROM [departments]"></asp:SqlDataSource>
</div>
وﻟﻛن ﻓﻲ ﻋﺑﺎرة اﻟـemployees وﻧﻘوم ﺑرﺑطﮭﺎ ﻣﻊ اﻟﺟدولGridView2 ﻧﻘوم ﺑﻌد ذﻟك ﺑﺈﺿﺎﻓﺔ أداة
ﻧﺿﯾف ﺷرط أن ﺗﻛون ﺳﺟﻼت اﻟﻣوظﻔﯾن اﻟﺗﻲ ﺳﯾﺗم إﺣﺿﺎرھﺎ ﻣواﻓﻘﺔ ﻟﺷرط أن ﯾﻛون رﻗم اﻟﻘﺳمselect
) ﻟﻣزﯾد ﻣن اﻟﻣﻌﻠوﻣﺎت راﺟﻊ ﻓﺻل ﻣﻘدﻣﺔ. GridView1 ﻣواﻓق ﻟرﻗم اﻟﻘﺳم اﻟذي ﺗم اﺧﺗﯾﺎره ﺿﻣن اﻷداة
. ( إﻟﺔ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت
-9-
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
1
4
2
3
5
6
- 10 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
AutoGenerateSelectButton="True" DataKeyNames="id"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name"
SortExpression="name" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [id], [name] FROM [departments]"></asp:SqlDataSource>
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource2">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
<asp:BoundField DataField="deptID" HeaderText="deptID"
SortExpression="deptID" />
<asp:BoundField DataField="photo" HeaderText="photo"
SortExpression="photo" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees] WHERE ([deptID] = @deptID)">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="deptID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</div>
( ﺿﻣن اﻷداةlink ﻋﻠﻰ ھﯾﺋﺔSelect ﻧﻼﺣظ ﻋﻧد ﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ إﻣﻛﺎﻧﯾﺔ اﺧﺗﯾﺎر ﺳطر ﻣﻌﯾن )ظﮭور
ﯾﺗم ﻣﻌرﻓﺔ, AutoGenerateSelectionButton ﻟﻠﺧﺎﺻﯾﺔTrue ﺣﯾث ﺗم إﺳﻧﺎد اﻟﻘﯾﻣﺔGridView1
: اﺧﺗﯾﺎر اﻟﻣﺳﺗﺧدم ﻣن ﺧﻼل أﺣد اﻟطراﺋق اﻷرﺑﻊ اﻟﺗﺎﻟﯾﺔ
- 11 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
)( : SelectedDataKeyﺗﻌﯾد ﻏرض DataKey Objectﻣرﺗﺑط ﺑﺎﻟﺳطر اﻟذي ﺗم اﺧﺗﯾﺎره ,ھذا
اﻟﺧﯾﺎر ﻣﻔﯾد ﻓﻲ ﺣﺎل وﺟود أﻛﺛر ﻣن data keyواﺣد .
)( : SelectedIndexﺗﻌﯾد رﻗم ) ﻓﮭرس ( اﻟﺳطر اﻟذي ﺗم اﺧﺗﯾﺎره ,ﯾﺑدأ اﻟﻌد ﻣن اﻟﺻﻔر ﺑﺎﻋﺗﺑﺎر
اﻟﺳطر اﻷول دﻟﯾﻠﮫ ﺻﻔر .
)( : SelectedValueﺗﻌﯾد ﻗﯾﻣﺔ data keyاﻟﻣرﺗﺑط ﺑﺎﻟﺳطر اﻟذي ﺗم اﺧﺗﯾﺎره ,ﻓﻲ ﺣﺎل وﺟود أﻛﺛر
ﻣن data keyﻓﺈﻧﮭﺎ ﺗﻌﯾد ﻗﯾﻣﺔ أول واﺣد ﻓﻘط .
)( : SelectedRowﺗﻌﯾد ﻏرض GridViewRow Objectﯾﻣﺛل اﻟﺳطر اﻟذي ﺗم اﺧﺗﯾﺎره .
ﺗرﺗﯾب اﻟﺑﯾﺎﻧﺎت
ﺗدﻋم اﻷداة GridViewإﻣﻛﺎﻧﯾﺔ ﺗرﺗﯾب اﻟﺑﯾﺎﻧﺎت اﻟﻣﻌروﺿﺔ و ﺑﺄﺳﻠوب ﺗﺻﺎﻋدي Ascendingأو ﺗﻧﺎزﻟﻲ
, Descendingوذﻟك ﻋﺑر ﺗﻔﻌﯾل اﻟﺧﺎﺻﯾﺔ AllowSortingﻣن ﺧﻼل إﻋطﺎﺋﮭﺎ اﻟﻘﯾﻣﺔ . Trueﻛﻣﺎ ﯾﻣﻛن
ﺗﻔﻌﯾل ﺧﺎﺻﯾﺔ اﻟﺗرﺗﯾب ﻋﺑر اﻟﻧﻘر ﻋﻠﻰ Smart Tagﻟﻸداة GridViewوﻣن ﺛم ﺗﻔﻌﯾل اﻟﺧﯾﺎر Enable
. Sorting
ﻟﻧﻘم ﺑﺈﺿﺎﻓﺔ أداة GridViewورﺑطﮭﺎ ﺑﺟدول اﻟﻣوظﻔﯾن employeeوﺗﻔﻌﯾل ﺧﯾﺎر ﺗرﺗﯾب اﻟﺑﯾﺎﻧﺎت ﺑﺣﯾث
ﯾﺻﺑﺢ ﻛود اﻟﺻﻔﺣﺔ ﺷﺑﯾﮫ ﺑﺎﻟﺗﺎﻟﻲ :
ﻛود ASP.net
><div
"<asp:GridView ID="GridView1" runat="server" AllowSorting="true
>DataSourceID="SqlDataSource1" /
- 12 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻋﻧد ﺗﻧﻔﯾذ اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ ﺳﺗﻼﺣظ أن ﻋﻧﺎوﯾن اﻟﺣﻘول ﺳﺗﺻﺑﺢ ﻛرواﺑط ﺗﺷﻌﺑﯾﺔ ,ﻋﻧد اﻟﻧﻘر ﻋﻠﻰ ﻋﻧوان أﺣد
اﻟﺣﻘول ﺳﯾﺗم ﺗرﺗﯾب ﺑﯾﺎﻧﺎت اﻟﺟدول ﺑﻧﺎءا ﻋﻠﻰ ﺑﯾﺎﻧﺎت ذﻟك اﻟﻌﻣود وﺑﺷﻛل ﺗﺻﺎﻋدي ,وﻋﻧد اﻟﻧﻘر ﻋﻠﻰ ﻋﻧوان
ﻧﻔس اﻟﻌﻣود ﻟﻣرة ﺛﺎﻧﯾﺔ ﻓﯾﺳﺗم اﻟﺗرﺗﯾب ﺑﺷﻛل ﻣﻌﺎﻛس ﻟﻣﺎ ﻛﺎن ﻋﻠﯾﮫ ,أي ﺑﺈﺳﻠوب ﺗﻧﺎزﻟﻲ ,ﻓﻲ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ
ﻗﻣت ﺑﺗرﺗﯾب ﺑﯾﺎﻧﺎت اﻟﻣوظﻔﯾن ﻋﻠﻰ أﺳﺎس اﻟراﺗب وﺑﺷﻛل ﺗﻧﺎزﻟﻲ ,أي ﻣن اﻟراﺗب اﻷﻋﻠﻰ إﻟﻰ اﻷدﻧﻰ .
ﻋﻧد اﻟﻌﻣل ﻣﻊ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت اﻟﺿﺧﻣﺔ واﻟﺗﻲ ﻗد ﺗﺣﺗوي ﻋﻠﻰ ﻋدد ﻛﺑﯾر ﻣن اﻟﺳﺟﻼت ﺿﻣن ﺟداوﻟﮭﺎ ﯾﺻﺑﺢ
ﻣن اﻟﺿروري ﻋرض اﻟﺟداول ﻋﻠﻰ ﻋدة ﺻﻔﺣﺎت ,ﺗدﻋم اﻷداة GridViewاﻟﺧﺎﺻﯾﺔ AllowPaging
واﻟﺗﻲ ﺗﻘوم ﺑﺗﻘﺳﯾم اﻟﺑﯾﺎﻧﺎت إﻟﻰ ﻋدة ﺻﻔﺣﺎت ,وﻧﺳﺗطﯾﻊ ﺗﺣدﯾد ﻋدد اﻷﺳطر اﻟﺗﻲ ﺳﺗظﮭر ﻓﻲ ﻛل ﺻﻔﺣﺔ ﻋﺑر
اﻟﺧﺎﺻﯾﺔ , PageSizeﺑﺎﻟﻌودة إﻟﻰ اﻟﻣﺛﺎل اﻟﺳﺎﺑق ,ﻧﻘوم ﺑﺗﻔﻌﯾل اﻟﺧﺎﺻﯾﺔ ) AllowPagingﯾﻣﻛن أﯾﺿﺎ
ﺗﻔﻌﯾﻠﮭﺎ ﻣن ﺧﻼل Smart Tagﻋﺑر اﻟﺧﺎﺻﯾﺔ , ( Enable Pagingﺑﻌد ذﻟك ﻧﻘوم ﺑﺗﺣدﯾد ﺣﺟم اﻟﺻﻔﺣﺔ ﺑـ 3
ﻟﯾﺗم ﻋرض ﺛﻼﺛﺔ أﺳطر ﻓﻘط ﻓﻲ ﻛل ﺻﻔﺣﺔ ﻣن ﺻﻔﺣﺎت GridViewﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ :
ﻓﻲ ﺣﺎل ﻟم ﯾﺗم ﺗﺣدﯾد ﺣﺟم اﻟﺻﻔﺣﺔ ﻓﺈن اﻟﻘﯾﻣﺔ اﻻﻓﺗراﺿﯾﺔ ﻟﮭﺎ ھو 10أﺳطر .ﻛود اﻟﺻﻔﺣﺔ ﯾﻛون ﻛﺎﻟﺗﺎﻟﻲ :
- 13 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻛود ASP.net
><div
"<asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="3
>DataSourceID="SqlDataSource1" /
ﻣﻼﺣظﺔ
إن ﺗﻘﺳﯾم اﻟﺑﯾﺎﻧﺎت إﻟﻰ ﺻﻔﺣﺎت ﻋدﯾدة ﻛﻣﺎ ﻓﻲ اﻷﺳﻠوب اﻟﺳﺎﺑق ﺳﯾؤدي إﻟﻰ ﺑطء ﺗﺣﻣﯾل اﻟﺻﻔﺣﺔ ﻋﻧد اﻟﻌﻣل
ﻣﻊ ﻗواﻋد اﻟﺑﯾﺎﻧﺎت اﻟﺿﺧﻣﺔ ,وذﻟك ﻷﻧﮫ ﯾﺗم ﺗﺣﻣﯾل ﻛﺎﻣل ﺳﺟﻼت اﻟﺟدول إﻟﻰ ذاﻛرة اﻟﺳﯾرﻓر وﻣن ﺛم إﺟراء
ﻋﻣﻠﯾﺔ اﻟﺗﻘﺳﯾم إﻟﻰ ﺻﻔﺣﺎت ,ﻓﻠو ﺗم اﻟﺗﻌﺎﻣل ﻣﻊ ﺟدول ﯾﺣﺗوي ﻋﻠﻰ ﻣﻠﯾون ﺳطر ﻓﺈﻧﮫ ﺳﯾﺗم ﺗﺣﻣﯾل اﻟﻣﻠﯾون
ﺳطر إﻟﻰ اﻟذاﻛرة ﺣﺗﻰ ﻟو ﺗم ﻋرض ﺳطر واﺣد ﻓﻘط ﻓﻲ ﻛل ﺻﻔﺣﺔ ﺿﻣن اﻷدة , GridViewﺳﻧﻌرض ﻓﻲ
ﻓﺻل ﻻﺣق طرﯾﻘﺔ أﻧﺳب ﻟﺗﻘﺳﯾم اﻟﺑﯾﺎﻧﺎت و ذﻟك ﺑﺎﺳﺗﺧدام اﻷداة . ObjectDataSource
ﻣن اﻟﻣزاﯾﺎ اﻟراﺋﻌﺔ اﻟﺗﻲ ﺗﻘدﻣﮭﺎ اﻷداة GridViewھﻲ إﻣﻛﺎﻧﯾﺔ ﺣذف وﺗﻌدﯾل اﻟﺑﯾﺎﻧﺎت دون اﻟﺣﺎﺟﺔ ﻟﻛﺗﺎﺑﺔ
ﺳطر ﺑرﻣﺟﻲ واﺣد ,وﻟﻛن ﺣﺗﻰ ﻧﺗﻣﻛن ﻣن إﺟراء ھذه اﻟﻌﻣﻠﯾﺎت ﯾﻧﺑﻐﻲ أوﻻ ﺗﮭﯾﺋﺔ اﻷداة SqlDataSource
ﻟﺗﺳﻣﺢ ﺑﮭﺎ ,وذﻟك ﻋﺑر إﺿﺎﻓﺔ ﻋﺑﺎرات SQLاﻟﺗﻲ ﺗﻘوم ﺗﻧﻔذ ھذه اﻟﻌﻣﻠﯾﺎت ) ,( Update, Deleteﺑﻛل
ﺑﺳﺎطﺔ أﻧﺷﺊ ﺻﻔﺣﺔ ﺟدﯾدة وأﺿف إﻟﯾﮭﺎ أداة GridViewواﺑدأ ﺑرﺑطﮭﺎ ﻣﻊ اﻟﺟدول Employeesوﻋﻧد
وﺻوﻟك ﻟﻠﻧﺎﻓذة اﻟﺗﺎﻟﯾﺔ ﻗم ﺑﺗﻔﻌﯾل ﺧﯾﺎر اﻟﺣذف واﻟﺗﻌدﯾل ﻛﻣﺎ ھو ﻣوﺿﺢ :
- 14 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
إن ﺗﻔﻌﯾل اﻟﺧﯾﺎر اﻷول ﯾﺳﻣﺢ ﻟﻧﺎ ﺑﺈﺟراء ﻋﻣﻠﯾﺎت اﻹﺿﺎﻓﺔ اﻟﺗﻌدﯾل واﻟﺣذف ﻋﻠﻰ اﻟﺟدول اﻟﻣﺣدد ,ﺷرط أن
ﯾﺣﺗوي اﻟﺟدول ﻋﻠﻰ ﻣﻔﺗﺎح أﺳﺎﺳﻲ ,أﻣﺎ اﻟﺧﯾﺎر اﻟﺛﺎﻧﻲ ﻓﮭو ﻣﻔﯾد ﻟﻣﻧﻊ ﺣدوث ﺗﺿﺎرب ﻓﻲ ﺑﯾﺎﻧﺎت اﻟﺟدول اذا
ﺗم ﺗﻌدﯾل ﻧﻔس اﻟﺳطر ﻣن ﻗﺑل ﻣﺳﺗﺧدﻣﯾن اﺛﻧﯾن أو أﻛﺛر ﻓﻲ ﻧﻔس اﻟوﻗت .ﻋﻠﻰ اﻟﻌﻣوم ﺑﻌد اﻻﻧﺗﮭﺎء ﻣن
ﺧطوات اﻟرﺑط ﺑﺷﻛل ﻛﺎﻣل ﻧﻘوم ﺑﺗﻔﻌﯾل ﺧﯾﺎري اﻟﺗﻌدﯾل واﻟﺣذف ﻓﻲ اﻷداة GridViewﺣﯾث ﻧظﻐط ﻋﻠﻰ
Smart Tagوﻧﻘوم ﺑﺗﻔﻌﯾل اﻟﺧﯾﺎرﯾن Enable Editingو Enable Deleting
- 15 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻋﺑر ﺗﻔﻌﯾل اﻟﺧﺎﺻﯾﺗﯾنGridView ﻛﻣﺎ أﻧﮫ ﺑﺎﻹﻣﻛﺎن ﺗﻔﻌﯾل اﻟﺧﯾﺎرﯾن اﻟﺳﺎﺑﻘﯾن ﻣن ﺧﺻﺎﺋص اﻷداة
وﺑﺎﻟﺗﺎﻟﻲ ﯾﺻﺑﺢ ﻛود اﻟﺻﻔﺣﺔAutoGenerateUpdateButton وAutoGenerateDeleteButton
إﻟﻰ اﻟﺟدول وذﻟك ﻷن اﻷداة- insert – ﺷﺑﯾﮫ ﺑﺎﻟﺗﺎﻟﻲ ) ﻟﻘد ﻗﻣت ﺑﺣذف اﻟﺟزء اﻟﻣﺗﻌﻠق ﺑﺈﻣﻛﺎﻧﯾﺔ إﺿﺎﻓﺔ ﺳطر
: ( ﻻﺗﺳﻣﺢ ﺑﮭذه اﻟﻌﻣﻠﯾﺔGridView
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server"
DataKeyNames="id" DataSourceID="SqlDataSource1"
AutoGenerateDeleteButton="true" AutoGenerateEditButton="true" />
وﻗد ﺗم إﺳﻧﺎد ﻗﯾﻣﺔ, واﻟﺗﻲ ﺗﺣدﺛﻧﺎ ﻋﻧﮭﺎ ﻣﺳﺑﻘﺎDataKeyNames ﻻﺣظ ﻓﻲ اﻟﻛود اﻟﺳﺎﺑق وﺟود اﻟﺧﺎﺻﯾﺔ
( وھذه اﻟﻌﻣﻠﯾﺔ ﺿرورﯾﺔ ﻟﻧﺗﻣﻛن ﻣن إﺟراء ﻋﻣﻠﯾﺎت اﻟﺣذف واﻟﺗﻌدﯾل ﻋﻠﻰid اﻟﻣﻔﺗﺎح اﻷﺳﺎﺳﻲ ﻟﮭﺎ ) اﻟﺣﻘل
. اﻟﺟدول
- 16 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﺑﺎﻹﻣﻛﺎن ﺗﺣدﯾد ﺳﻠوك اﻷداة GridViewﻋﻧدﻣﺎ ﻻﯾﻛون ھﻧﺎك ﺑﯾﺎﻧﺎت ﻣرﺟﻌﺔ ﻣن ﻣﺻدر اﻟﺑﯾﺎﻧﺎت ,ﻛﺄن ﯾﻛون
اﻟﺟدول ﻓﺎرغ ﻣﺛﻼ ,ﯾﻣﻛن ﻓﻲ ھذه اﻟﺣﺎﻟﺔ إظﮭﺎر ﻋﺑﺎرة ﻟﻠﻣﺳﺗﺧدم ﺗﻔﯾد ﺑﻌدم وﺟود ﺑﯾﺎﻧﺎت وذﻟك ﻋﺑر اﻟﺧﺎﺻﯾﺔ
, EmptyDataTextﻛﻣﺎ ﺗﺗوﻓر ﺧﺎﺻﯾﺔ ﺛﺎﻧﯾﺔ أﻛﺛر ﻏﻧﻰ وھﻲ EmptyDataTamplateواﻟﺗﻲ ﺗﺗﯾﺢ
ﺧﯾﺎرات أوﺳﻊ ﺳﻧﻌرﺿﮭﺎ ﺿﻣن اﻷﺳطر اﻟﻘﺎدﻣﺔ .
ﻟﺗوﺿﯾﺢ ﻋﻣل اﻟﺧﺎﺻﺗﯾن اﻟﺳﺎﺑﻘﺗﯾن ﺳﻧﻘوم ﺑﺑﻧﺎء ﺻﻔﺣﺔ ﻟﻠﺑﺣث ﻋن ﻣوظف ﺣﺳب اﺳﻣﮫ ,وﻓﻲ ﺣﺎل ﻋدم وﺟود
ﻣوظف ﺑﮭذا اﻻﺳم ﺗﻘوم اﻷداة GridViewﺑﻌرض اﻟﻧص "ﻻﯾوﺟد ﻣوظف ﺑﮭذا اﻻﺳم" ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة
اﻟﺗﺎﻟﯾﺔ :
ﻗم ﺑﺈﺿﺎﻓﺔ ﺻﻔﺣﺔ ﺟدﯾدة وأﺿف ﻋﻠﯾﮭﺎ أداة Buttonوأداة TextBoxوأداة GridViewﺛم ﻗم ﺑرﺑطﮭﺎ ﻣﻊ
ﺟدول اﻟﻣوظﻔﯾن Employeesوأﺿف ﺷرط أن ﯾﻘوم ﺑﻌرض اﻟﻣوظﻔﯾن اﻟذﯾن ﻟﮭم اﺳم ﻛﺎﻟﻧص اﻟﻣﻛﺗوب ﻓﻲ
اﻷداة TextBoxﻛﻣﺎ ﻓﻲ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ :
- 17 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
و ﻧﻘوم ﺑﺈﺳﻧﺎد اﻟﻘﯾﻣﺔ " ﻻﯾوﺟد ﻣوظﻔﯾن ﺑﮭذا اﻻﺳم " إﻟﻰ اﻟﺧﺎﺻﯾﺔGridView1 ﻧﺧﺗﺎر اﻷداة
ﺛم ﻧﻘوم ﺑﺈﺿﺎﻓﺔ اﻟﻛود اﻟﺗﺎﻟﻲ ﻓﻲ ﺣدث اﻟﻧﻘر ﻋﻠﻰ, Visible ﻟﻠﺧﺎﺻﯾﺔfalse واﻟﻘﯾﻣﺔ, EmptyDataText
: search اﻟزر
C# ﻛود
GridView1.Visible = true;
VB ﻛود
GridView1.Visible = true
ASP.net ﻛود
<div>
<asp:TextBox ID="TextBox1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Search" onclick="Button1_Click" />
<hr />
<asp:GridView ID="GridView1" runat="server" Visible="false"
DataKeyNames="id" DataSourceID="SqlDataSource1"
EmptyDataText=" "اﻻﺳﻢ ﺑﮭﺬا ﻣﻮظﻒ ﯾﻮﺟﺪ ﻻ/>
</div>
- 18 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
Header
AlternatingRows Rows
Pager
Footer
ﺗﺣﺗوي اﻷداة GridViewﻋﻠﻰ ﻣﺟﻣوﻋﺔ ﺿﺧﻣﺔ ﻣن اﻟﺧﺻﺎﺋص اﻟﺗﻲ ﺗﻔﯾد ﺑﺗﻧﺳﯾق ﻣظﮭر ھذه اﻷداة وﻣﻧﮭﺎ :
ﺟﻣﯾﻊ اﻟﺧﺻﺎﺋص اﻟﺳﺎﺑﻘﺔ ﺗﺣﺗوي ﻋﻠﻰ اﻟﺧﺎﺻﯾﺔ CssClassواﻟﺗﻲ ﺗﺗﯾﺢ إﻣﻛﺎﻧﯾﺔ ﺗﺣدﯾد اﻟﺗﻧﺳﯾق ﺿﻣن ﻛود
CSSوﻣن ﺛم ﯾﺗم ﺗﺣدﯾد اﺳم اﻟﺻف اﻟﻣراد ﺗطﺑﯾﻘﮫ .
ﻣﺛﺎل :
ﯾﻌرض ھذا اﻟﻣﺛﺎل ﻛﯾﻔﯾﺔ ﺗﻧﺳﯾق ﻣظﮭر اﻷداة GridViewﻋﺑر ﺻﻔوف CSSواﻟﺧﺎﺻﯾﺔ . CssClass
ﻛود ASP.net
"<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewFormatting.aspx.cs
>Inherits="GridViewFormatting" %
- 19 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>GridView Formatting</title>
<style type="text/css">
.grid
{ font:16px Arial, Sans-Serif; }
.grid td, .grid th
{ padding:10px; }
.header
{ text-align:left;
color:white;
background-color:blue;
}
.row td
{ border-bottom:solid 1px blue; }
.alternating
{ background-color:#eeeeee; }
.alternating td
{ border-bottom:solid 1px blue; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
ﺣﯾث ﻧﺿﻐط ﺑﺎﻟﺑداﯾﺔ ﻋﻠﻰ اﻟـ, ﻛﻣﺎ ﺗوﺟد ﻣﺟﻣوﻋﺔ ﻣن اﻟﺗﻧﺳﯾﻘﺎت اﻟﺟﺎھزة واﻟﺗﻲ ﯾﻣﻛن ﺗطﺑﯾﻘﮭﺎ ﺑﻛل ﺳﮭوﻟﺔ
ﺳﺗظﮭر ﻧﺎﻓذة ﺗﺣﺗوي ﻋﻠﻰ ﻣﺟﻣوﻋﺔ اﻟﺗﻧﺳﯾﻘﺎتAuto Format ﺛم ﻧﺧﺗﺎرGridView ﻟﻸداةsmart tag
. ﻛﻣﺎ ﻧﺳﺗطﯾﻊ اﻟﺗﻌدﯾل ﻋﻠﻰ ھذه اﻟﺗﻧﺳﯾﻘﺎت إن أردﻧﺎ ذﻟك, ﻧﺧﺗﺎر ﻣﻧﮭﺎ ﻣﺎﯾﻧﺎﺳﺑﻧﺎ ﻟﺗطﺑﯾﻘﮫ
- 20 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
أﻣﺎ ﺑﺎﻟﻧﺳﺑﺔ ﻟﻠﺳطرﯾن Header , Footerﻓﺑﺈﻣﻛﺎﻧﻧﺎ اﻟﺗﺣﻛم ﻓﻲ ظﮭورھﻣﺎ أو إﺧﻔﺎﺋﮭﻣﺎ وذﻟك ﻋﺑر اﻟﺧﺎﺻﯾﺗﯾن
ShowHeader , ShowFooterﻋﻠﻰ اﻟﺗواﻟﻲ .
ﻓﻲ ﺟﻣﯾﻊ اﻟﻔﻘرات اﻟﺳﺎﺑﻘﺔ ﻛﻧﺎ ﻧدع اﻷداة GridViewﺗﻘوم ﺑﺗوﻟﯾد اﻟﺣﻘول وﻋﻧوﻧﺗﮭﺎ ﺑﺷﻛل ﺗﻠﻘﺎﺋﻲ وﺑدون ﺗدﺧل
ﻣن ﻗﺑﻠﻧﺎ ,وﻟﻛن ھذا ﻟﯾس ﺑﺎﻷﺳﻠوب اﻷﻓﺿل وﻗد ﻻ ﯾﻠﺑﻲ ﺣﺎﺟﺎت اﻟﻣﺑرﻣﺞ ,ﺣﯾث إن ﻋﻧﺎوﯾن اﻟﺣﻘول ﺗﺄﺧذ
ﻗﯾﻣﮭﺎ ﻛﺄﺳﻣﺎء اﻟﺣﻘول ﻓﻲ ﺟدول ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت وھذا أﻣر ﻏﯾر ﻣﺳﺗﺣﺳن ,ﻛﻣﺎ أن اﻟﺑﯾﺎﻧﺎت ﺗﻌرض داﺋﻣﺎ ﻋﻠﻰ
ﺷﻛل ﻧص ﻓﻣﺎذا ﻟو أردﻧﺎ أن ﯾﺗم ﻋرض ﺻورة ؟ ﻛﯾف ﻧﺳﺗطﯾﻊ إﺿﺎﻓﺔ أداة DropDownListداﺧل اﻷداة
, GridViewﻛﯾف ﻧﺿﯾف أدوات اﻟﺗﺣﻘق إﻟﻰ اﻷداة GridViewأﺛﻧﺎء ﻋﻣﻠﯾﺔ اﻟﺗﻌدﯾل ؟ ﻛل ھذه اﻷﺳﺋﻠﺔ
ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ أﻣور أﺧرى ﺳﺗﺗم ﻣﻧﺎﻗﺷﺗﮭﺎ ﺿﻣن ھذه اﻟﻔﻘرة واﻟﻔﻘرات اﻟﻘﺎدﻣﺔ .
- 21 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻟﻛل ﻧﻣط ﻣن اﻷﻧﻣﺎط اﻟﺳﺎﺑﻘﺔ ﻣﺟﻣوﻋﺔ ﻛﺑﯾرة ﻣن اﻟﺧﺻﺎﺋص ,ﺳﻧﻘوم ﺑﺷرﺣﮭﺎ ﻣﻊ ﺗطﺑﯾق أﻣﺛﻠﺔ ﻋﻠﻰ ﻛل ﻣﻧﮭﺎ
ﺿﻣن اﻟﻔﻘرات اﻟﺗﺎﻟﯾﺔ .
وھو أﺑﺳط ﻧﻣط ﻣن أﻧﻣﺎط اﻟﺣﻘول ,ﺣﯾث ﯾﺗم ﻋرض اﻟﺑﯾﺎﻧﺎت ﻛﻧص ﻋﺎدي )وھو اﻟﻧﻣط اﻟذي ﻧﺷﺎھده ﺣﺗﻰ
اﻵن ( ,وﻓﻲ أﺳﻠوب اﻟﺗﻌدﯾل ﯾﺗم ﻋرض اﻟﺑﯾﺎﻧﺎت ﺿﻣن أداوت TextBoxﻓﻲ ﻧﻣط . SingleLine
- 22 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﻼﺣظ أن ﻣﻌظم ھذه اﻟﺧﺻﺎﺋص ﺗﺗﻌﻠق ﺑﻣظﮭر اﻟﺑﯾﺎﻧﺎت وﻟﯾﺳت ﺧﺻﺎﺋص ذات طﺎﺑﻊ ﺑرﻣﺟﻲ .
ﻣﺛﺎل :
اﻓﺗﺢ اﻟﺟدول employeesﺿﻣن ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت وﻋدل ﻗﯾﻣﺔ اﻟﺣﻘل salaryإﻟﻰ NULLﻷﺣد اﻟﻣوظﻔﯾن
ﻟﺗﺻﺑﺢ ﺑﯾﺎﻧﺎت اﻟﺟدول ﻣﺷﺎﺑﮭﺔ ﻟﻠﺗﺎﻟﻲ :
اﻟﻣطﻠوب ھو ﻋرض ﺑﯾﺎﻧﺎت اﻟﺟدول اﻟﺳﺎﺑق ﺿﻣن ﻣﺗﺻﻔﺢ اﻻﻧﺗرﻧت ﺑﺎﻷﺳﻠوب اﻟﺗﺎﻟﻲ :
ﺣﯾث ﺗم إﻋطﺎء اﻟﺣﻘول ﻋﻧﺎوﯾن ﻣﺧﺗﻠﻔﺔ ﻋﻣﺎ ھﻲ ﻓﻲ ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت ,ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ أن ﻗﯾم اﻟﺣﻘل salaryﻗد
أﺧذت ﺗﻧﺳﯾق اﻟﻌﻣﻠﺔ وﺗم ظﮭور اﻟﻌﺑﺎرة "ﻏﯾر ﻣﺣدد" ﺑدﻻ ﻣن , NULLأﻣﺎ ﻛود اﻟﺻﻔﺣﺔ ﻓﮭو :
ﻛود ASP.net
><div
"<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False
>"DataKeyNames="id" DataSourceID="SqlDataSource1
><Columns
"" InsertVisible="Falseاﻟﺮﻗﻢ"=<asp:BoundField DataField="id" HeaderText
>ReadOnly="True" SortExpression="id" /
"اﻻﺳﻢ"=<asp:BoundField DataField="fname" HeaderText
>SortExpression="fname" /
"اﻟﻜﻨﯿﺔ"=<asp:BoundField DataField="lname" HeaderText
>SortExpression="lname" /
- 23 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻓﺄﻧت ﻋزﯾزي, أﺳﻠوب ﺳﮭل ﺟدا ﻟﻠﺗﻌدﯾل ﻋﻠﻰ ﺧﺻﺎﺋص اﻟﺣﻘولVisual Studio ﺗوﻓر ﻟﻧﺎ ﻣﻧﺻﺔ اﻟﻌﻣل
ﻟﻔﻌلFields إﻧﻣﺎ ﺑﺎﻹﻣﻛﺎن اﻻﺳﺗﻌﺎﻧﺔ ﺑﺎﻟﻧﺎﻓذة, اﻟﻣﺑرﻣﺞ ﻏﯾر ﻣﺿطر ﻟﻛﺗﺎﺑﺔ اﻟﺧﺻﺎﺋص اﻟﺳﺎﺑﻘﺔ ﺑﺷﻛل ﯾدوي
: ذﻟك ﻋﺑر اﻟﺧطوات اﻟﺗﺎﻟﯾﺔ
اﻟﺗﻲ أﺿﻔﻧﺎھﺎGridView ﺿﻣن اﻟﺻﻔﺣﺔ اﻟﺗﻲ ﻧﻌﻣل ﻋﻠﯾﮭﺎ اﻧﺗﻘل إﻟﻰ وﺿﻊ اﻟﺗﺻﻣﯾم و اﻧﻘر ﻋﻠﻰ اﻷداة
Edit Columns ( اﻧﻘر ﻋﻠﯾﮫ و اﺧﺗرsmart tag ﺳﯾظﮭر ﺳﮭم ﺻﻐﯾر ) ﯾدﻋﻰ, ﻣﺳﺑﻘﺎ
وﻻﺣظ ظﮭور ﺟﻣﯾﻊsalary ﻗم ﺑﺗﺣدﯾد اﻟﺣﻘل, Feilds ﺳﺗﻔﺗﺢ اﻵن ﻧﺎﻓذة ﺧﺻﺎﺋص اﻟﺣﻘول واﻟﺗﻲ ﺗدﻋﻰ
: ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ, ﺧﺻﺎﺋﺻﮫ ﻣﻊ اﻟﻘﯾم اﻟﺟدﯾدة اﻟﺗﻲ ﻋدﻟﻧﺎ ﻋﻠﯾﮭﺎ
- 24 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
إن ھذه اﻟﻧﺎﻓذة ﺗﺳﮭل اﻟﺗﻌﺎﻣل ﻣﻊ ﺧﺻﺎﺋص اﻟﺣﻘول وﻟﻛن ﻻﺗﻌﺗﻣد ﻋﻠﯾﮭﺎ ﺑﺎﻟﻛﺎﻣل وﺗﻧﺳﻰ أﺳﻠوب اﻟﺗﻌدﯾل ﻋﻠﻰ
اﻟﺧﺻﺎﺋص ﻣن ﺧﻼل اﻟﻛود ﺑﺷﻛل ﻣﺑﺎﺷر .
ﯾﺳﺗﺧدم ھذا اﻟﻧﻣط ﻣﻊ ﺑﯾﺎﻧﺎت اﻟﺣﻘول اﻟﺗﻲ ﺗدﻋم ﻗﯾﻣﺗﯾن ﻓﻘط ﻛﺎﻟﻘﯾم اﻟﻣﻧطﻘﯾﺔ True , Falseﺣﯾث ﯾﺗم
ﻋرﺿﮭﺎ ﻋﻠﻰ ﺷﻛل أداة اﻟﺗﺣﻛم . CheckBox
( ھو ﻣن اﻟﻧﻣطmarriage ) "ﺧﻼل اﻟﻣﺛﺎل اﻟذي ﻗﻣﻧﺎ ﺑﺗطﺑﯾﻘﮫ ﺿﻣن اﻟﻔﻘرة اﻟﺳﺎﺑﻘﺔ ﻧﺟد أن اﻟﺣﻘل "ﻣﺗزوج؟
) ﻋﻠﻣﺎ أﻧﻧﺎ ﻟم ﻧﻘم ﺑﺗﺣدﯾد ھذا اﻟﻧﻣط ! ( ﺑﺷﻛل ﺗﻠﻘﺎﺋﻲ ﻓﺈن ﺟﻣﯾﻊ اﻟﺣﻘول اﻟﺗﻲ ﻟﮭﺎ ﻧﻣطCheckBoxFeild
ﺿﻣنCheckBoxField ﺿﻣن ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت ﯾﺗم إظﮭﺎرھﺎ ﻋﻠﻰ ﺷﻛل ﺣﻘل ﻣن اﻟﻧﻣطBoolean اﻟﺑﯾﺎﻧﺎت
. أدوات ﻋرض اﻟﺑﯾﺎﻧﺎت
: "marriage" وﻟو راﺟﻌﻧﺎ ﻛود اﻟﺻﻔﺣﺔ ﺳﻧﺟد ھذا اﻟﻧﻣط ﻣﺳﺗﺧدم ﻣﻊ اﻟﺣﻘل
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText=" "اﻟﺮﻗﻢInsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText=""اﻻﺳﻢ
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText=""اﻟﻜﻨﯿﺔ
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText=""ﻣﺘﺰوج؟
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText=""اﻟﺮاﺗﺐ
SortExpression="salary" DataFormatString="{0:c}"
NullDisplayText=" "ﻏﯿﺮﻣﺤﺪد/>
<asp:BoundField DataField="deptId" HeaderText=""اﻟﻘﺴﻢ
SortExpression="deptId" />
<asp:BoundField DataField="photo" HeaderText=""ﺷﺨﺼﯿﺔ ﺻﻮرة
SortExpression="photo" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees]"></asp:SqlDataSource>
</div>
أﻣﺎ ﻓﻲ وﺿﻌﯾﺔ اﻟﺗﻌدﯾل ﻓﯾﺗم, ﻓﻲ وﺿﻌﯾﺔ اﻟﻌرضDisable ﺗﻛون ﻓﻲ ﺣﺎﻟﺔCheckBox ﻧﻼﺣظ أن اﻷداة
. ﺗﻔﻌﯾﻠﮭﺎ وﺑﺎﻟﺗﺎﻟﻲ ﯾﻣﻛن ﺗﻐﯾﯾر اﻟﻘﯾﻣﺔ اﻟﻣﻘﺎﺑﻠﺔ ﻟﮭﺎ ﺿﻣن ﺟدول ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت
- 26 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
اﺳﺗﺧدام CommandFields
ﻧﺳﺗﺧدم ﻧﻣط اﻟﺣﻘول CommandFieldsﻟﺗﺧﺻﯾص ﻣظﮭر أزرار اﻻﺧﺗﯾﺎر واﻟﺗﻌدﯾل واﻟﺗﺣدﯾث واﻟﺣذف
وإﻟﻐﺎء اﻷﻣر ) ( Edit, Delete, Update, Cancel, and Selectوﯾﺗم ھذا ﻓﻲ ﺣﺎل ﺗﺣدﯾد ظﮭور ھذه
اﻟﺧﯾﺎرات ,ﺣﯾث ﺗﻛون ﻏﯾر ظﺎھرة ﻓﻲ اﻟﺣﺎﻟﺔ اﻻﻓﺗراﺿﯾﺔ .
ﺳﻧﻘوم ﺑﺎﻟﺑداﯾﺔ ﺑﺗطﺑﯾق ﻣﺛﺎل ﯾوﺿﺢ ﻋﻣل ھذا اﻟﻧﻣط ﻣن اﻟﺣﻘول ﺛم ﻧﺳﺗﻌرض ﺑﻌد ذﻟك ﻣﺟﻣوﻋﺔ اﻟﺧﺻﺎﺋص
اﻟﻣرﺗﺑطﺔ ﺑﮫ .
ﻗم ﺑﺈﻧﺷﺎء ﺻﻔﺣﺔ ﺟدﯾدة وأﺿف أداة GridViewو ارﺑطﮭﺎ ﻣﻊ ﻗﺎﻋدة و ﻗم ﺑﺗﻔﻌﯾل ﺧﯾﺎرات اﻹﺿﺎﻓﺔ واﻟﺣذف
واﻟﺗﻌدﯾل ﻋﻧد ﺿﺑط إﻋدادات اﻻﺗﺻﺎل ﺑﺎﻟﺟدول ) ﺗم ﺗوﺿﯾﺢ ھذه اﻟﺧطوات ﺿﻣن ﻓﺻل اﻟﺗﻌﺎﻣل ﻣﻊ اﻷداة
( SqlDataSourceﻛﻣﺎ ﺗوﺿﺢ اﻟﺻور اﻟﺗﺎﻟﯾﺔ :
- 27 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﺑﻌد اﻻﻧﺗﮭﺎء ﻣن إﻋداد ﺑﺎﻗﻲ ﺧطوات اﻻﺗﺻﺎل ﺑﺎﻟﺟدول ,ﻧﺿﻐط ﻋﻠﻰ smart tagﺛم ﻧﻔﻌل اﻟﺧﯾﺎرﯾن
Enable Editingو Enable Deleting
ﺑﺎﻹﻣﻛﺎن اﻵن ﺗﺷﻐﯾل اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ وإﺟراء ﻋﻣﻠﯾﺎت اﻟﺗﻌدﯾل واﻟﺣذف ﻋﻠﻰ اﻟﺑﯾﺎﻧﺎت وﺳﺗﻛون اﻟﺻﻔﺣﺔ
ﻛﺎﻟﺗﺎﻟﻲ :
- 28 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ASP.net ﻛود
<div>
- 29 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
></div
ﻻﺣظ ﺑﺄﻧﻲ ﻗﻣت ﻓﻲ اﻟﻛود اﻟﺳﺎﺑق ﺑﺣذف ﻋﺑﺎرة اﻹﺿﺎﻓﺔ Insertﺿﻣن اﻷداة SqlDataSource1وذﻟك
ﻷن اﻷداة GridViewﻻﺗدﻋم ھذه اﻟﻌﻣﻠﯾﺔ ﺑﺷﻛﻠﮭﺎ اﻻﻓﺗراﺿﻲ .
ﻓﻲ اﻟﻛود اﻟﺳﺎﺑق ﻓﺈن ﻧﻣط اﻟﺣﻘول CommandFieldھو اﻟذي أﺗﺎح ﻟﻧﺎ اﻟزرﯾن Edit , Deleteوذﻟك ﻋﺑر
ﺗﻔﻌﯾل اﻟﺧﺎﺻﯾﺗﯾن ShowEditButtonو . ShowDeleteButton
: ButtonTypeﻟﺗﺣدﯾد ﻧوع اﻷداة اﻟﺗﻲ ﺳﺗظﮭر ﺿﻣن ھذا اﻟﺣﻘل وﯾﻣﻛن أن ﺗﺄﺧذ إﺣدى اﻟﻘﯾم
. Button, Image, Link
: ShowSelectButtonﯾﺳﺗﺧدم ﻟﻌرض زر اﻻﺧﺗﯾﺎر . Select
: SelectTextﻟﺗﺣدﯾد ﻧص ﯾظﮭر ﻋﻠﻰ زر اﻻﺧﺗﯾﺎر .
: SelectImageUrlﻟﺗﺣدﯾد ﺻورة ﺗظﮭر ﻛزر اﻻﺧﺗﯾﺎر .
: ShowEditButtonﯾﺳﺗﺧدم ﻟﻌرض زر اﻟﺗﻌدﯾل . Edit
: EditTextﻟﺗﺣدﯾد ﻧص ﯾظﮭر ﻋﻠﻰ زر اﻟﺗﻌدﯾل .
: EditImageUrlﻟﺗﺣدﯾد ﺻورة ﺗظﮭر ﻛزر ﺗﻌدﯾل .
: ShowDeleteButtonﯾﺳﺗﺧدم ﻟﻌرض زر اﻟﺣذف . Delete
: DeleteTextﻟﺗﺣدﯾد ﻧص ﯾظﮭر ﻋﻠﻰ زر اﻟﺣذف .
: DeleteImageUrlﻟﺗﺣدﯾد ﺻورة ﺗظﮭر ﻛزر ﺣذف .
: ShowInsertButtonﯾﺳﺗﺧدم ﻟﻌرض زر اﻹﺿﺎﻓﺔ . Insert
: InsertTextﻟﺗﺣدﯾد ﻧص ﯾظﮭر ﻋﻠﻰ زر اﻹﺿﺎﻓﺔ .
: InsertImageUrlﻟﺗﺣدﯾد ﺻورة ﺗظﮭر ﻛزر إﺿﺎﻓﺔ .
: ShowCancelButtonﯾﺳﺗﺧدم ﻟﻌرض زر إﻟﻐﺎء اﻷﻣر . Cancel
: CancelTextﻟﺗﺣدﯾد ﻧص ﯾظﮭر ﻋﻠﻰ زر إﻟﻐﺎء اﻷﻣر .
: CancelImageUrlﻟﺗﺣدﯾد ﺻورة ﺗظﮭر ﻛزر إﻟﻐﺎء اﻷﻣر .
: CuasesValidationﺗﻣﻛﻧﻧﺎ ﻣن ﺗﺟﺎوز أدوات اﻟﺗﺣﻘق ﻋﻧد اﻟﺿﻐط ﻋﻠﻰ زر اﻟﺗﻌدﯾل . Edit
: ValidationGroupﺗﻣﻛﻧﻧﺎ ﻣن رﺑط زر اﻟﺗﻌدﯾل ﻣﻊ ﻣﺟﻣوﻋﺔ أدوات ﺗﺣﻘق وذﻟك ﻟﻧﺿﻣن أن
اﻟﺑﯾﺎﻧﺎت اﻟﺟدﯾدة ﺗﺧﺿﻊ ﻟﺷروط ﻣﺣددة .
- 30 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻓﺈﻧﮫ ﺑﺈﻣﻛﺎﻧﻧﺎ اﻟﺗﻌدﯾل ﻋﻠﻰ ھذه اﻟﺧﺻﺎﺋصCommandField ﺑﻌد أن ﺗﻌرﻓﻧﺎ ﻋﻠﻰ ﺧﺻﺎﺋص ﻧﻣط اﻟﺣﻘول
: ﺑﺣﯾث ﻧﺻل إﻟﻰ ﻧﺗﯾﺟﺔ ﻣﺷﺎﺑﮭﺔ ﻟﻠﺗﺎﻟﻲ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField
ButtonType="Image"
ShowEditButton="true"
EditText="Edit Movie"
EditImageUrl="edit.png"
UpdateText="Update Movie"
UpdateImageUrl="save.png"
ShowCancelButton="true"
CancelText="Cancel Edit"
CancelImageUrl="cancel.png"
ShowDeleteButton="true"
DeleteText="Delete Movie"
DeleteImageUrl="delete.png"
/>
.
.
- 31 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﺣﯾث ﯾﻣﻛن اﻟوﺻول إﻟﻰ ھذه اﻟﺧﺻﺎﺋص ﻣن ﺧﻼل اﻟﻧﻘر ﻋﻠﻰ smart tagﺛم ﻧﺧﺗﺎر Edit Columnsﺛم
ﻧﺣدد اﻟﺣﻘل CommandField
ﻧﺳﺗﺧدم ﻧﻣط اﻟﺣﻘول ImageFieldﻟﻌرض اﻟﺻور داﺧل اﻷداة GridViewﺣﯾث ﺗﻛون ﻣوﺟودة ﻋﻠﻰ
اﻟﺳﯾرﻓر و ﻣﺳﺎرات ھذه اﻟﺻور ﺗﻛون ﻣﺧزﻧﺔ ﺿﻣن ﺟدول ﻣﺎ ﻓﻲ ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت .
ﻟﻧﻘم ﺑداﯾﺔ ﺑﺈﻧﺷﺎء ﺻﻔﺣﺔ ﺟدﯾدة و إﺿﺎﻓﺔ أداة GridViewورﺑطﮭﺎ ﻣﻊ اﻟﺟدول Employeeﺣﯾث ﻧﻘوم
ﺑﺈﺣﺿﺎر وﻋرض ﻛﺎﻓﺔ اﻟﺣﻘول ,ﻗم ﺑﺗﻧﻔﯾذ ھذه اﻟﺻﻔﺣﺔ ﺿﻣن اﻟﻣﺗﺻﻔﺢ ,ﺳﺗﺣﺻل ﻋﻠﻰ اﻟﻧﺗﯾﺟﺔ اﻟﺗﺎﻟﯾﺔ :
- 32 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﻼﺣظ اﻟﻘﯾم اﻟﻣﺧزﻧﺔ ﺿﻣن اﻟﻌﻣود photoوھﻲ ﻣﺳﺎرات اﻟﺻور ﺿﻣن اﻟﻣﺷروع اﻟﺣﺎﻟﻲ ,ﻣﺎﻧرﯾده ﻓﻌﻠﯾﺎ
ھو ﻋرض ھذه اﻟﺻور وﻟﯾس ﻋرض ﻣﺳﺎراﺗﮭﺎ ! وھﻧﺎ ﯾﺄﺗﻲ دور ﻧﻣط اﻟﺣﻘول , ImageFieldاﺿﻐط ﻋﻠﻰ
smart tagﺿﻣن اﻟـ GridViewو اﺧﺗر Edit Columns
ﺳﺗظﮭر اﻟﻧﺎﻓذة , Filedsﻧﻘوم ﺑﺣذف اﻟﺣﻘل ) photoﻷﻧﮫ ﺑوﺿﻌﮫ اﻻﻓﺗراﺿﻲ ﯾﻛون ﻣن اﻟﻧﻣط
BoundFieldوھو ﻏﯾر ﻗﺎدر ﻋﻠﻰ ﻋرض اﻟﺻور (
- 33 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﻘوم ﺑﻌد ذﻟك ﺑﺈﺿﺎﻓﺔ ﺣﻘل ﺟدﯾد ﻣن اﻟﻧﻣط ImageFieldوﻧﻘوم ﺑﺿﺑط ﺑﻌض ﺧﺻﺎﺋﺻﮫ ﻛﺎﻟﺗﺎﻟﻲ :
DataImageUrlFieldﻧﻌطﯾﮭﺎ اﻟﻘﯾﻣﺔ ) photoوھﻧﺎ ﺗﻛﻣن ﻋﻣﻠﯾﺔ اﻟرﺑط اﻟﻔﻌﻠﯾﺔ ﻣﻊ ﻣﺻدر اﻟﺑﯾﺎﻧﺎت اﻟذي
ﺳﯾﺣدد ﻣﺳﺎر اﻟﺻور ( ,ﻛﻣﺎ ﻧﻘوم ﺑﺿﺑط أﺑﻌﺎد اﻟﺻور اﻟﺗﻲ ﺳﯾﺗم ﻋرﺿﮭﺎ ﺣﯾث ﻗﻣت ﺑﺟﻌﻠﮭﺎ 75 * 75
ﺑﯾﻛﺳل ,ﺗظﮭر ھذه اﻹﻋدادات ﻓﻲ اﻟﺷﻛل اﻟﺗﺎﻟﻲ :
- 34 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
1 4
2
5
3
6
- 35 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
Fileds ﺗم ظﮭور اﻟﺻور وھذا ﻣﺎﻧرﯾده وﻟﻛن ﻧﻼﺣظ ﻋدم ظﮭور ﻋﻧوان ﻟﻠﺣﻘل اﻟﺟدﯾد ! ﻧﻌود إﻟﻰ اﻟﻧﺎﻓذة
أو أيphoto اﻟﻘﯾﻣﺔHeaderText ﻧﺣدد اﻟﺣﻘل اﻟﺟدﯾد اﻟذي ﻗﻣﻧﺎ ﺑﺈﺿﺎﻓﺗﮫ و ﻧﻌطﻲ اﻟﺧﺎﺻﯾﺔ, اﻟﺳﺎﺑﻘﺔ
ﺣﯾث ﺳﺄﻛﺗﻔﻲ, ﺑﺈﻣﻛﺎﻧك ﻋزﯾزي اﻟﻘﺎرئ اﺳﺗﻛﺷﺎف ﺑﺎﻗﻲ اﻟﺧﺻﺎﺋص ووظﯾﻔﺔ ﻛل ﻣﻧﮭﺎ. ﻋﻧوان ﻣﻧﺎﺳب ﻟك
. ﺿﻣن اﻟﺻﻔﺣﺎت اﻟﻘﺎدﻣﺔ ﺑذﻛر اﻟﺧﺻﺎﺋص اﻟﮭﺎﻣﺔ ﻓﻘط ﻟﮭذا اﻟﻧﻣط ﻣن اﻟﺣﻘول
: ﻛود اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
- 36 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻣﻼﺣظﺔ
وﺑﺎﻟﺗﺎﻟﻲ ﻻﯾﺧﻔﻰHTML < ﺑﻠﻐﺔimg> إن اﻟﺻور اﻟﺗﻲ ﯾﺗم إﻧﺷﺎؤھﺎ ﺳﯾﺗم ﺗرﺟﻣﺗﮭﺎ ﻧﮭﺎﯾﺔ اﻟﻣطﺎف إﻟﻰ وﺳوم
ﻓﺑﻌض اﻷﺷﺧﺎص ﯾوﻗف ﻋرض اﻟﺻور ﻓﻲ ﻣﺗﺻﻔﺣﮫ اﻟﺧﺎص, alt=”” ﻋﻠﻰ أﺣد أھﻣﯾﺔ وﺟود اﻟﻧص اﻟﺑدﯾل
. ﻛﻣﺎ أﻧﮫ ﯾرﻓﻊ ﻣن ﺗرﺗﯾب ﻣوﻗﻌك ﺿﻣن ﻧﺗﺎﺋﺞ اﻟﺑﺣث ﻓﻲ ﻣﺣرﻛﺎت اﻟﺑﺣث, ﻓﻌﻧدھﺎ ﺳﯾظﮭر ھذا اﻟﻧص
. إذا ً ﻋزﯾزي اﻟﻣﺑرﻣﺞ ﻻﺗﮭﻣل إﻋطﺎء ﻗﯾﻣﺔ ﻟﻠﻧص اﻟﺑدﯾل ﻓﻲ ﻛل ﻣرة ﺗﺳﺗﺧدم ﻓﯾﮭﺎ اﻟﺻور
- 37 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﯾﺳﺗﺧدم اﻟﻧﻣط ButtonFieldﻟﻌرض أداة Buttonﺿﻣن اﻟﺟدول GridViewوﺑﺎﻟﺗﺎﻟﻲ ﻧﺳﺗطﯾﻊ ﺑرﻣﺟﺔ ھذا
اﻟزر ﻟﺗﻧﻔﯾذ ﻛود ﻣﻌﯾن ﻋﻧد اﻟﻧﻘر ﻋﻠﯾﮫ ,ﻣﺛﻼ ﻓﻲ ﺟدول اﻟﻣوظﻔﯾن employeesﺳﻧﻘوم ﺑﻌرض ﺑﯾﺎﻧﺎت
اﻟﻣوظﻔﯾن و إﺿﺎﻓﺔ ﻋﻣود ﺟدﯾد ﻣن اﻟﻧﻣط ButtonFieldﺿﻣن اﻟـ GridViewوﻋﻧد اﻟﻧﻘر ﻋﻠﯾﮫ ﯾﺗم ﺗﺣﻣﯾل
ﺻورة اﻟﻣوظف إﻟﻰ ﺟﮭﺎز اﻟﻣﺗﺻﻔﺢ ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ :
- 38 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﺿﯾف ﺻﻔﺣﺔ ﺟدﯾدة ﻟﻧطﺑق اﻟﻣﺛﺎل ﻋﻠﯾﮭﺎ ,أﺿف GridViewوﻗم ﺑﺿﺑط إﻋداداﺗﮫ واﺗﺻﺎﻟﮫ ﺑﻘﺎﻋدة اﻟﺑﯾﺎﻧﺎت
ﻛﻣﺎ ﺗﻌﻠﻣﻧﺎ ﻓﻲ اﻟﻔﻘرات اﻟﺳﺎﺑﻘﺔ ﻟﯾﺻﺑﺢ ﻣﻣﺛﺎﻻ ﻟﻠﺷﻛل اﻟظﺎھر ﻓﻲ اﻟﺻورة ﺑﺎﻷﻋﻠﻰ ) ﺑﺎﺳﺗﺛﻧﺎء ظﮭور اﻷزرار
, ( Downloadﺑﻌد ﺗﺟﮭﯾز ﻣﺎﺳﺑق ﻧﺄﺗﻲ اﻵن إﻟﻰ ﻣﺣور ﺣدﯾﺛﻧﺎ ھﻧﺎ وھو إﺿﺎﻓﺔ ﺣﻘل ﻣن اﻟﻧﻣط
, ButtonFieldأﻧﻘر ﻋﻠﻰ smart tagﺿﻣن اﻟـ GridViewواﺧﺗر Edit Columns
ﺳﺗظﮭر اﻟﻧﺎﻓذة , Filedsﺿﻣن اﻟﻘﺳم Available Fieldsاﺧﺗر اﻟﻧﻣط ButtonFieldواﺿﻐط ﻋﻠﻰ , Add
ﺛم ﻗم ﺑﺗﺣدﯾد اﻟﺣﻘل اﻟﺟدﯾد اﻟذي ﺗم إﺿﺎﻓﺗﮫ ﻓﻲ اﻟﻘﺳم , Selected Fieldsﺑﻌد ذﻟك اﻧﺗﻘل إﻟﻰ اﻟﻘﺳم
ButtonField propertiesو ﻗم ﺑﺗﻌدﯾل ﻗﯾﻣﺔ اﻟﺧﺎﺻﯾﺔ ButtonTypeإﻟﻰ اﻟﻘﯾﻣﺔ , Buttonﺗﻌدﯾل
اﻟﺧﺎﺻﯾﺔ Textﻹﻋطﺎﺋﮭﺎ اﻟﻘﯾﻣﺔ Downloadھذه اﻟﺧطوات ﺗﺗوﺿﺢ ﻣن ﺧﻼل اﻟﺻورة اﻟﺗﺎﻟﯾﺔ :
- 39 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
1 4
2 5
3
6
ﻣﻼﺣظﺔ :ﺑﺈﻣﻛﺎﻧﻧﺎ إﻋطﺎء اﻟﺧﺎﺻﯾﺔ ButonTypeاﻟﻘﯾﻣﺔ Linkأو Imageﺣﯾث ﺳﯾﺗم ﻣﻌﺎﻣﻠﺗﮭم ﺑﺎﻋﺗﺑﺎرھم
أدوات LinkButtonو ImageButtonوھﻣﺎ ﻣﺷﺗﻘﺎن ﻋﻣوﻣﺎ ﻣن اﻷداة Buttonوﻗد ﺗﻌرﻓﻧﺎ ﻋﻠﯾﮭم
ﺑﺎﻟﺗﻔﺻﯾل ﺿﻣن ﻓﺻل ﺳﺎﺑق .
ﺑﻌد اﻟﺿﻐط ﻋﻠﻰ OKﺿﻣن اﻟﻧﺎﻓذة اﻟﺳﺎﺑﻘﺔ ﺳﯾﺗم إﺿﺎﻓﺔ اﻟﺣﻘل اﻟﺟدﯾد ﻣن اﻟﻧﻣط ButtonFieldو أﺻﺑﺢ
ﺑﺈﻣﻛﺎﻧﻧﺎ اﻟﺑدء ﺑﻛﺗﺎﺑﺔ اﻟﻛود ﺿﻣن اﻷزرار اﻟﺗﻲ أﺿﯾﻔت .
ﺳﻧﻘوم ﺑﺈﺿﺎﻓﺔ أداة Lableإﻟﻰ اﻟﺻﻔﺣﺔ اﻟﺣﺎﻟﯾﺔ اﻟﺗﻲ ﻧﻌﻣل ﻋﻠﯾﮭﺎ وﻧﻌطﻲ اﻟﺧﺎﺻﯾﺔ Textاﻟﻘﯾﻣﺔ ) 0ﺻﻔر(
وﻋﻧد اﻟﻧﻘر ﻋﻠﻰ أﺣد اﻷزرار اﻟﺗﻲ ﺿﻣن اﻟـ GridViewﯾزﯾد ھذا اﻟﻌدد ﺑﻣﻘدار واﺣد ,ﻗم ﺑﺗﺣدﯾد اﻷداة
GridViewﺛم ﺿﻣن اﻟﺣدث GridView1_RowCommandأﻛﺗب اﻟﻛود اﻟﺗﺎﻟﻲ :
- 40 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
C# ﻛود
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
Label1.Text = (int.Parse(Label1.Text) + 1).ToString();
}
VB ﻛود
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As
GridViewCommandEventArgs)
Label1.Text = (Integer.Parse(Label1.Text) + 1).ToString()
End Sub
ASP.net ﻛود
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1"
onrowcommand="GridView1_RowCommand" >
<Columns>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
<asp:BoundField DataField="deptId" HeaderText="deptId"
SortExpression="deptId" />
<asp:ImageField DataImageUrlField="photo" HeaderText="photo">
<ControlStyle Height="75px" Width="75px" />
</asp:ImageField>
<asp:ButtonField ButtonType="Button" Text="Download" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees]" >
</asp:SqlDataSource>
<br />
<asp:Label ID="Label1" runat="server" Text="0" />
- 41 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
. Lable وﻻﺣظ زﯾﺎدة ﻗﯾﻣﺔ اﻷداةGridView ﻗم ﺑﺗﺷﻐﯾل اﻟﺻﻔﺣﺔ اﻵن و ﻗم ﺑﺎﻟﻧﻘر ﻋﻠﻰ اﻷزرار ﺿﻣن اﻟـ
إذا و ﺣﺗﻰ اﻵن ﻓﺈن ﺟﻣﯾﻊ اﻷزرار ﺗﻘوم ﺑﺗﻧﻔﯾذ ﻧﻔس اﻟﻛود ﺗﻣﺎﻣﺎ ) وھو زﯾﺎدة اﻟﻌداد ﺑﻘﯾﻣﺔ واﺣد ( و ﻟﻛن
ﻣﺎﻧرﯾده ﻧﺣن ھو ﺗﺣﻣﯾل اﻟﺻورة اﻟﻣﺟﺎورة ﻟﻠزر و ﺑﺎﻟﺗﺎﻟﻲ ﯾﺟب ﻣﻌرﻓﺔ ﻣﺳﺎر اﻟﺻورة اﻟﺗﻲ ﺗظﮭر ﻓﻲ ﻧﻔس
DataKeyNames إﻟﻰphoto ﻧﻌود إﻟﻰ ﻛود اﻟﺻﻔﺣﺔ ﻧﺿﯾف اﻟﻌﻣود, ﺳطر اﻟزر اﻟذي ﺗم اﻟﻧﻘر ﻋﻠﯾﮫ
ﻧﺣدد ﻟﻠﺧﺎﺻﯾﺔ, وھذه اﻟﻌﻣﻠﯾﺔ ﺣﺗﻰ ﻧﺗﻣﻛن ﻣن اﻟوﺻول إﻟﻰ ﻗﯾم ھذا اﻟﻌﻣودGridView1 ﺿﻣن
: وﺑﺎﻟﺗﺎﻟﻲ ﯾﺻﺑﺢ ﻛود اﻟﺻﻔﺣﺔ, “download” اﻟﻘﯾﻣﺔButtonField اﻟﺗﺎﺑﻌﺔ ﻟﻠﻧﻣطCommandName
ASP.net ﻛود
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id,photo" DataSourceID="SqlDataSource1"
onrowcommand="GridView1_RowCommand">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
<asp:BoundField DataField="deptId" HeaderText="deptId"
SortExpression="deptId" />
<asp:ImageField DataImageUrlField="photo" HeaderText="photo">
<ControlStyle Height="75px" Width="75px" />
</asp:ImageField>
<asp:ButtonField ButtonType="Button" Text="Download"
CommandName="download" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees]" >
</asp:SqlDataSource>
<br />
<asp:Label ID="Label1" runat="server" Text="0" />
أﻣﺎ اﻟﻛود اﻟذي ﯾﻘوم ﺑﺎﻟوﺻول إﻟﻰ ﻣﺳﺎر اﻟﺻورة وﺗﺣﻣﯾﻠﮭﺎ ﻋﻠﻰ ﺟﮭﺎز اﻟﻣﺗﺻﻔﺢ ﻓﺳﯾﻛون ﺿﻣن اﻟﺣدث
: ﺑﺎﻟﺷﻛل اﻟﺗﺎﻟﻲGridView1_RowCommand
- 42 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
C# ﻛود
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "download")
{
int index = int.Parse((string)e.CommandArgument);
string filename = GridView1.DataKeys[index].Values["photo"].ToString();
if (filename != "")
{
string path = MapPath(filename);
byte[] bts = System.IO.File.ReadAllBytes(path);
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Type", "Application/octet-stream");
Response.AddHeader("Content-Length", bts.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" +
filename);
Response.BinaryWrite(bts);
Response.Flush();
Response.End();
}
}
VB ﻛود
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As
GridViewCommandEventArgs)
If e.CommandName = "download" Then
Dim index As Integer = Integer.Parse(CType(e.CommandArgument, String))
Dim filename As String = GridView1.DataKeys(index).Values("photo").ToString()
- 43 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﺳﺗﺧدم ﻧﻣط اﻟﺣﻘول HyperLinkFiledﻟﺑﻧﺎء رواﺑط ﺗﺷﻌﺑﯾﺔ داﺧل اﻷداة , GridViewوﺑﺈﻣﻛﺎﻧﻧﺎ ﺟﻌل ھذه
اﻟرواﺑط دﯾﻧﺎﻣﯾﻛﯾﺔ ﺑﺣﯾث ﯾﻘوم ﻛل ﻣﻧﮭﺎ ﺑﻌرض ﻧص ﻣﺧﺗﻠف ﻋن اﻵﺧر و ﯾﻧﻘﻠﻧﺎ إﻟﻰ ﺻﻔﺣﺔ ﻣﺧﺗﻠﻔﺔ ﻋن ﻏﯾره
وﺑﺈﻣﻛﺎﻧﻧﺎ ﻣن ﻧﺎﺣﯾﺔ أﺧرى ﺟﻌل ھذه اﻟرواﺑط ﺛﺎﺑﺗﺔ اﻟﻧص وﺗﻧﻘﻠﻧﺎ ﺟﻣﯾﻌﮭﺎ إﻟﻰ ﺻﻔﺣﺔ ﺛﺎﺑﺗﺔ .
ﺳﻧﻘوم ﺑﺈﻧﺷﺎء ﺻﻔﺣﺗﯾن ,اﻟﺻﻔﺣﺔ اﻷوﻟﻰ ) ( Departments.aspxﻧﻌرض ﻓﯾﮭﺎ أﻗﺳﺎم اﻟﺷرﻛﺔ وﻋﻧد اﻟﻧﻘر
ﻋﻠﻰ اﺳم ﻗﺳم ﻣﺎ ﯾﺗم اﻻﻧﺗﻘﺎل إﻟﻰ ﺻﻔﺣﺔ أﺧرى ) ( employees.aspxﻟﻌرض اﻟﻣوظﻔﯾن اﻟﺗﺎﺑﻌﯾن ﻟﮭذا
اﻟﻘﺳم ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻور اﻟﺗﺎﻟﯾﺔ :
- 44 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﺳﺗظﮭر اﻟﻧﺎﻓذة , Fieldsﻣن اﻟﻘﺳم selected fieldsﻗم ﺑﺣذف ﺟﻣﯾﻊ اﻟﺣﻘول اﻟﻣوﺟودة ,ﺑﻌد ذﻟك اﺧﺗر
HyperLinkFieldﻣن اﻟﻘﺳم Available fieldsواﺿﻐط ﻋﻠﻰ , Addﻧﻘوم اﻵن ﺑﺿﺑط ﺑﻌض ﺧﺻﺎﺋص
ھذا اﻟﺣﻘل اﻟﺟدﯾد .ﻧﻌطﻲ اﻟﺧﺎﺻﯾﺔ DataNavigateUrlFieldاﻟﻘﯾﻣﺔ , idﻛﻣﺎ ﻧﻌطﻲ اﻟﺧﺎﺻﯾﺔ
DataNavigateUrlFormatStringاﻟﻘﯾﻣﺔ } employees.aspx?id={0ھذه اﻟﻌﺑﺎرة ﺗﻣﺛل اﺳم اﻟﺻﻔﺣﺔ
اﻟﺗﻲ ﺳﯾﺗم اﻻﻧﺗﻘﺎل إﻟﯾﮭﺎ ﻋﻧد اﻟﻧﻘر ﻋﻠﻰ أﺣد اﻟرواﺑط اﻟﺗﺷﺑﻌﯾﺔ اﻟﺗﻲ ﺳﯾوﻟدھﺎ ھذا اﻟﺣﻘل ,ﻧﻼﺣظ أﻧﮫ ﯾﺣﺗﺎج
ﻟﻘﯾﻣﺔ ﻟﻠﺑﺎراﻣﺗر } id={0ھذه اﻟﻘﯾﻣﺔ ﯾﺗم أﺧذھﺎ ﻣن ﻗﯾﻣﺔ اﻟﺧﺎﺻﯾﺔ DataNavigateUrlFieldاﻟﺗﻲ ﻋدﻟﻧﺎھﺎ
ﻗﺑل ﻗﻠﯾل ) ﺳﻧﺗﺄﺗﻲ ﻋﻠﻰ ﺷرح ھذه اﻟﺧﺻﺎﺋص ﺑﻌد ﻗﻠﯾل ( ,أﺧﯾرا ﻧﻌطﻲ اﻟﺧﺎﺻﯾﺔ DataTextFieldاﻟﻘﯾﻣﺔ
nameوھﻲ ﺗﻣﺛل اﻟﻧص اﻟذي ﺳﯾﺗم ﻋرﺿﮫ ﻛراﺑط ﺗﺷﻌﺑﻲ .اﻟﺻورة اﻟﺗﺎﻟﯾﺔ ﺗوﺿﺢ اﻟﺧطوات اﻟﺗﻲ ﻗﻣﻧﺎ ﺑﮭﺎ
- 45 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
1
4
إﻟﻰ ھﻧﺎ ﻧﻛون ﻗد اﻧﺗﮭﯾﻧﺎ ﻣن إﻋداد ھذا اﻟﺣﻘل وﻟﻛن ﻗﺑل إﻏﻼق اﻟﻧﺎﻓذة اﻟﺳﺎﺑﻘﺔ ﺑﺈﻣﻛﺎﻧك ﺗﻌدﯾل اﻟﺧﺎﺻﯾﺔ
. " ﻹﻋطﺎء ﻋﻧوان ﻟﮭذا اﻟﺣﻘل وﻟﯾﻛن "اﺳم اﻟﻘﺳمHeaderText
: ﻛود اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<div>
- 46 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
إﻟﻰ ھﻧﺎ ﻧﻛون ﻗد اﻧﺗﮭﯾﻧﺎ ﻣن اﻟﺣدﯾث ﻋن ﻧﻣط اﻟﺣﻘول HyperLinkFieldﺑﺈﻣﻛﺎﻧك ﻋرض اﻟﺻﻔﺣﺔ ﺿﻣن
اﻟﻣﺗﺻﻔﺢ و ﻣﺷﺎھدة اﻟﻧﺗﯾﺟﺔ .ﺑﺎﻟطﺑﻊ ﻋﻧد اﻟﻧﻘر ﻋﻠﻰ أﺣد اﻟروﺑط ﻓﺈﻧﮫ ﺳﯾﻧﻘﻠك إﻟﻰ اﻟﺻﻔﺣﺔ employees
وھﻲ ﻏﯾر ﻣوﺟودة ﺑﻌد وﻟﻛن ﻻﺣظ اﻟﻌﻧوان اﻟﻣطﻠوب واﻟﻘﯾﻣﺔ اﻟﺗﻲ ﯾﺄﺧذھﺎ اﻟﺑﺎراﻣﺗر idﺑﺣﺳب رﻗم اﻟﻘﺳم
اﻟذي اﺧﺗرﺗﮫ .
ﻋﻣوﻣﺎ ﺳﻧﻘوم اﻵن ﺑﺑﻧﺎء اﻟﺻﻔﺣﺔ employees.aspxﻟﻌرض اﻟﻣوظﻔﯾن اﻟﺗﺎﺑﻌﯾن ﻟﻠﻘﺳم اﻟذي ﺗم اﺧﺗﯾﺎره ﻣن
اﻟﺻﻔﺣﺔ . departmentsأﺿف أداة GridViewوارﺑطﮭﺎ ﻣﻊ اﻟﺟدول employeesﻣن ﻗﺎﻋدة اﻟﺑﯾﺎﻧﺎت
وﻟﻛن أﺿف ﺷرط ﻋﻠﻰ ﻋﺑﺎرة اﻻﺳﺗﻌﻼم وھو أن ﯾﺗم ﻋرض اﻟﻣوظﻔﯾن اﻟﺗﺎﺑﻌﯾن ﻟﻠﻘﺳم اﻟذي ﺗم ﺗﻣرﯾر رﻗﻣﮫ
ﺿﻣن ﻋﻧوان اﻟﺻﻔﺣﺔ ) ﻧﺎﻗﺷﻧﺎ ﻛﯾﻔﯾﺔ إﺿﺎﻓﺔ ھذه اﻟﺷروط ﻓﻲ ﻓﺻل ﺳﺎﺑق ( اﻟﺻورة اﻟﺗﺎﻟﯾﺔ ﺗوﺿﺢ اﻟﻌﻣل
اﻟﻣطﻠوب
- 47 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
1
4
2
3
5
6
- 48 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﻓﮭو ﺗﻘﻠﯾديGridView ﻛود اﻟﺻﻔﺣﺔ ) ﺳﺄﻛﺗﻔﻲ ﺑﻌرض اﻟﺟزء اﻟﺧﺎص ﺑﻌﺑﺎرة اﻻﺳﺗﻌﻼم أﻣﺎ ﻛود اﻷداة
( وﻻﺟدﯾد ﻋﻠﯾﮫ ﻓﻲ ھذه اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees] WHERE ([deptId] = @deptId)">
<SelectParameters>
<asp:QueryStringParameter Name="deptId" QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
واﺧﺗر ﻗﺳم ﻣﺎ ﻟﯾﺗم ﻋرض اﻟﺻﻔﺣﺔdepartments ﺷﻐل اﻟﺻﻔﺣﺔ, ﻗم اﻵن ﺑﺈﻋﺎدة اﺧﺗﺑﺎر اﻟﺗﻣرﯾن ﻛﺎﻣﻼ
ﺿﻣنid ﻣرة أﺧرى ﻻﺣظ ﻛﯾﻔﯾﺔ ﺗﻣرﯾر اﻟﺑﺎراﻣﺗر. ﻣﻊ ﺑﯾﺎﻧﺎت اﻟﻣوظﻔﯾن اﻟﺗﺎﺑﻌﯾن ﻟﮭذا اﻟﻘﺳمemployess
. ﻋﻧوان اﻟﺻﻔﺣﺔ
- 49 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﯾﻣﻛﻧﻧﺎ ھذا اﻟﻧﻣط ﻣن إﺿﺎﻓﺔ أي ﺷﻲ ﻧرﻏب ﺑﮫ داﺧل ﻋﻣود اﻟـ , GridViewﻓﮭو ﺑﻣﺛﺎﺑﺔ ﻗﺎﻟب ﻓﺎرغ ﻧﺳﺗطﯾﻊ
ﻣن ﺧﻼﻟﮫ إﻧﺷﺎء اﻟﺷﻛل اﻟذي ﻧرﯾد ,ﺣﯾث ﺑﺈﻣﻛﺎﻧﻧﺎ إﺿﺎﻓﺔ ﻣﻌظم أدوات ASP.NETأو HTMLﻟﯾﺗم ﻋرﺿﮭﺎ
ﺿﻣن ھذا اﻟﻧﻣط ) … . ( Button, Image, HyperLinkوﺑﺎﻟﺗﺎﻟﻲ ﻧﺳﺗﯾطﻊ اﻟﻘول إن ﺗﻣﻛﻧت ﺟﯾدا ﻣن ھذا
اﻟﻧﻣط ﻓﮭو ﯾﻐﻧﯾك ﻋن ﺟﻣﯾﻊ اﻷﻧﻣﺎط اﻟﺳﺎﺑﻘﺔ اﻟﺗﻲ ﺗﺣدﺛﻧﺎ ﻋﻧﮭﺎ .ﻟﺗوﺿﯾﺢ أﺳﻠوب اﻟﺗﻌﺎﻣل ﻣﻊ ھذا اﻟﻧﻣط ﺳﻧﻘوم
ﺑﺗطﺑﯾق ﺛﻼث أﻣﺛﻠﺔ ﻣﺧﺗﻠﻔﺔ ﻣن ﻧﺎﺣﯾﺔ اﻟﮭدف و اﻟﺻﻌوﺑﺔ وذﻟك ﻟﻺﺣﺎطﺔ ﺑﺄﻛﺑر ﻗدر ﻣﻣﻛن ﻣن ﻣزاﯾﺎ ھذا اﻟﻧﻣط.
ﺳﻧﻘوم ﺿﻣن ھذا اﻟﻣﺛﺎل ﺑﺗوﺿﯾﺢ ﻛﯾﻔﯾﺔ ﻋرض ﺻورة ﺿﻣن ﻧﻣط اﻟﺣﻘول , TemplateFieldﻗم ﺑﺈﺿﺎﻓﺔ
ﺻﻔﺣﺔ ﺟدﯾد و أﺿف ﻋﻠﯾﮭﺎ أداة GridViewو ارﺑطﮭﺎ ﻣﻊ اﻟﺟدول employeesﻟﯾﺗم ﻋرض ﺟﻣﯾﻊ ﺑﯾﺎﻧﺎت
اﻟﻣوظﻔﯾن ﻓﻲ اﻟﺟدول ,ﻗم ﺑﺎﻟﻧﻘر ﻋﻠﻰ SmartTagو اﺧﺗر EditColumns
ﺛم ﻗم ﺑﺗﺣدﯾد اﻟﻌﻣود , photoﺛم اﺿﻐط ﻋﻠﻰ , Convert this field into a TemplateFiledﺛم
اﺿﻐط ﻋﻠﻰ OK
- 50 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
1
2
ASP.net ﻛود
<asp:TemplateField HeaderText="photo" SortExpression="photo">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("photo") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("photo") %>'/>
</EditItemTemplate>
</asp:TemplateField>
- 51 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻧﻌود اﻵن إﻟﻰ اﻟﺻﻔﺣﺔ ﺑوﺿﻌﯾﺔ اﻟﺗﺻﻣﯾم و ﻧﻧﻘر ﻋﻠﻰ samrtTagوﻧﺧﺗﺎر Edit Templates
ﻧﺣذف اﻷداة Lable1و ﻧﺿﻊ ﻋوﺿﺎ ً ﻋﻧﮭﺎ أداة , Imageﻟﻧﺟﻌﻠﮭﺎ ﺗﻘوم ﺑﻌرض ﺻورة اﻟﻣوظف
- 52 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
2
1
3
ﻧﻼﺣظ أﻧﮫ ﺑﺎﻹﻣﻛﺎن ﺗﺣدﯾد ﻋﻣود آﺧر ﯾﻛون ﺑﻣﺛﺎﺑﺔ ﻣﺻدر ﺑﯾﺎﻧﺎت ﻟﻠﺧﺎﺻﯾﺔ AlternateTextواﻟﺗﻲ ﺳﯾﺗم
ﻋرض ﻗﯾﻣﺗﮭﺎ ﻓﻲ ﺣﺎل ﻋدم ظﮭور اﻟﺻورة .
ﺑﻌد اﻻﻧﺗﮭﺎء ﻣن ﺗﺣدﯾد ﻣﺻدر ﺑﯾﺎﻧﺎت اﻟﺻورة ﻧﺿﻐط ﻋﻠﻰ SmartTagاﻟﺧﺎص ﺑﺎﻷداة GridViewوﻧﺧﺗﺎر
. End Template Editng
- 53 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
: ﻟﻧﺟده أﺻﺑﺢ ﻛﺎﻟﺗﺎﻟﻲphoto ﻧﻌود إﻟﻰ ﻛود اﻟﺻﻔﺣﺔ و ﺑﺎﻟﺗﺣدﯾد إﻟﻰ ﻛود اﻟﺣﻘل
ASP.net ﻛود
<asp:TemplateField HeaderText="photo" SortExpression="photo">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("photo") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("photo") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
و ﻗدLable ﺣﯾث ﻛﺎن, ItemTemplate ﻧﻼﺣظ ﻣن ﺧﻼل اﻟﻛود اﻟﺳﺎﺑق ﺗﻐﯾﯾر ﻗﯾﻣﺔ ﻣﺣﺗوﯾﺎت اﻟﻘﺎﻟب
ﻛﺎن ﺑﺈﻣﻛﺎﻧﻧﺎ ﺑﺳﮭوﻟﺔ إﺟراء ھذا اﻟﺗﻌدﯾل ﻋﻠﻰ اﻟﻛود ﻣﺑﺎﺷرة دون اﻟﺣﺎﺟﺔ ﻟﻺﺳﺗﻌﺎﻧﺔ ﺑﺎﻟﻧواﻓذ, Image أﺻﺑﺢ
. إﻧﻣﺎ أردت ﺗوﺿﯾﺢ ﻛﻼ اﻷﺳﻠوﺑﯾن وﻟك اﻟﺣرﯾﺔ ﻓﯾﻣﺎ ﺗﺧﺗﺎر, اﻟﺳﺎﺑﻘﺔ
ﻗم ﺑﺗﺷﻐﯾل اﻟﺻﻔﺣﺔ اﻟﺳﺎﺑﻘﺔ و ﺳﺗﻼﺣظ ﻋرض ﺻور اﻟﻣوظﻔﯾن دون اﻟﺣﺎﺟﺔ ﻻﺳﺗﺧدام ﻧﻣط اﻟﺣﻘول
ﻗم. و ﺑﺄﺳﻠوب ﻣﻣﺎﺛل ﺑﺈﻣﻛﺎﻧك وﺿﻊ أوات أﺧرى واﻻﺳﺗﻐﻧﺎء ﻋن أﻧﻣﺎط اﻟﺣﻘول اﻟﺳﺎﺑﻘﺔImageField
: ﻛود اﻟﺻﻔﺣﺔ ﻟﮭذا اﻟﻣﺛﺎل ﻛﺎﻣﻼ, ﻓﻼ داﻋﻲ ﻟﮫ ﻓﻲ ﻣﺛﺎﻟﻧﺎ ھذاEditItemTemplate ﺑﺣذف اﻟﻘﺎﻟب
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
<asp:BoundField DataField="deptId" HeaderText="deptId"
SortExpression="deptId" />
<asp:TemplateField HeaderText="photo" SortExpression="photo">
<ItemTemplate>
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# Eval("photo") %>' />
</ItemTemplate>
- 54 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
></asp:TemplateField
></Columns
></asp:GridView
"<asp:SqlDataSource ID="SqlDataSource1" runat="server
">ConnectionString="<%$ ConnectionStrings:ConnectionString %
>SelectCommand="SELECT * FROM [employees]"></asp:SqlDataSource
></div
ﻻﺣظﻧﺎ ﻣن ﺧﻼل اﻟﻣﺛﺎل اﻟﺳﺎﺑق أن ﻧﻣط اﻟﺣﻘول TemplateFieldﯾﺣﺗوي ﻋﻠﻰ ﻧﻣطﯾن ﻣن اﻟﻘواﻟب أﺣدھﻣﺎ
ﻟوﺿﻌﯾﺔ ﻋرض اﻟﺑﯾﺎﻧﺎت و اﻵﺧر ﯾظﮭر ﻋﻧد وﺿﻌﯾﺔ اﻟﺗﻌدﯾل ,ﻓﻲ اﻟﺣﻘﯾﻘﺔ ﯾوﺟد أرﺑﻌﺔ أﻧﻣﺎط أﺧرى ﺣﯾث إن
ﻧﻣط اﻟﺣﻘول TemplateFieldﯾدﻋم أﻧﻣﺎط اﻟﻘواﻟب اﻟﺗﺎﻟﯾﺔ :
: ItemTemplateﺗظﮭر ﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﻓﻲ ﻛل ﺳطر ﺑﯾﺎﻧﺎت ﯾﺗم ﻋرﺿﮫ ﺿﻣن اﻷداة
GridView
: EditItemTemplateﺗظﮭر ﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﻓﻘط ﻋﻧدﻣﺎ ﯾﻛون اﻟﺳطر ﻓﻲ ﺣﺎﻟﺔ ﺗﻌدﯾل
اﻟﺑﯾﺎﻧﺎت
: InsertItemTemplateﺗظﮭر ﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﻓﻘط ﻋﻧدﻣﺎ ﻧرﻏب ﺑﺈﺿﺎﻓﺔ ﺳطر ﺟدﯾد و ھذه
اﻟﻌﻣﻠﯾﺔ ﻏﯾر ﻣدﻋوﻣﺔ ﺿﻣن اﻷداة GridViewوﺑﺎﻟﺗﺎﻟﻲ ﻻﯾوﺟد اﺳﺗﺧدام ﻓﻌﻠﻲ ﻟﮭذا اﻟﻘﺎﻟب ﺿﻣن اﻟـ
GridViewوﻟﻛﻧﻧﺎ ﺳﻧﺳﺗﺧدﻣﮫ ﻣﻊ أدوات أﺧرى ﺿﻣن ﻓﺻول ﻗﺎدﻣﺔ
: AlternatingItemTemplateﺗظﮭر ﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﻓﻲ اﻷﺳطر ذات اﻟدﻟﯾل اﻟزوﺟﻲ
ﺿﻣن اﻟـ ) GridViewاﻟﺳطر اﻟﺛﺎﻧﻲ و اﻟراﺑﻊ واﻟﺳﺎدس ...وھﻛذا ( ,ﻓﻲ ﺣﯾن أن اﻷﺳطر اﻟﻔردﯾﺔ
ﺗﺑﻘﻰ ﻟﺗﻌرض ﻣﺣﺗوﯾﺎت اﻟﻘﺎﻟب , ItemTemplateواذا ﻟم ﯾﺗم ذﻛر ھذا اﻟﻘﺎﻟب ﻓﺈن ﺟﻣﯾﻊ اﻷﺳطر
ﺳﺗﻌرض ﻣﺣﺗوﯾﺎت اﻟﻘﺎﻟب ) ItemTemplateﻛﻣﺎ ﻓﻌﻠﻧﺎ ﺿﻣن اﻟﻣﺛﺎل اﻟﺳﺎﺑق (
: HeaderTemplateﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﺗظﮭر ﻛﻌﻧوان ﯾظﮭر أﻋﻠﻰ اﻟﻌﻣود
: FooterTemplateﻣﺣﺗوﯾﺎت ھذا اﻟﻘﺎﻟب ﺗظﮭر ﻛﻌﻧوان ﯾظﮭر أﺳﻔل اﻟﻌﻣود
اﻟﻣﺛﺎل اﻟﺛﺎﻧﻲ
ﺳﻧﻘوم ﺿﻣن ھذا اﻟﻣﺛﺎل ﺑﺎﻟﺗﻌﺎﻣل ﻣﻊ ﻧﻣط اﻟﻘواﻟب EditItemTemplateوذﻟك ﻹﺿﺎﻓﺔ أداة اﻟﺗﺣﻘق
RequiredFieldValidatorﻟﺿﻣﺎن أن اﻟﻣﺳﺗﺧدم ﻟم ﯾﺗرك ﺣﻘل اﻟﺑﯾﺎﻧﺎت ﻓﺎرغ ﻋﻧد إﺟراء ﻋﻣﻠﯾﺔ اﻟﺗﻌدﯾل
- 55 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻗم ﺑﺈﻧﺷﺎء ﺻﻔﺣﺔ ﺟدﯾدة و أﺿف ﻋﻠﯾﮭﺎ أداة GridViewﻣﻊ ﺗﻔﻌﯾل إﻣﻛﺎﻧﯾﺔ ﺗﻌدﯾل وﺣذف اﻟﺑﯾﺎﻧﺎت ,ﻗم ﺑﻌد
ذﻟك ﺑﺗﺣوﯾل اﻟﺣﻘل fnameإﻟﻰ اﻟﻧﻣط , TemplateFieldاﺿﻐط ﻋﻠﻰ SmartTagاﻷداة GridView
واﺧﺗر Edit Templates
2
1
ﻛود ASP.net
><div
"<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False
> "DataKeyNames="id" DataSourceID="SqlDataSource1
><Columns
><asp:CommandField ShowEditButton="True" /
"<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True
>SortExpression="id" /
- 56 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
: اﻟﻣﺛﺎل اﻟﺛﺎﻟث
داﺧل اﻷداةDropDownList ﻟوﺿﻊ أداةTemplateField ﺿﻣن ھذا اﻟﻣﺛﺎل ﺳﻧﻘوم ﺑﺎﺳﺗﺧدام ﻧﻣط اﻟﺣول
ﻛﻣﺎ,( ﺣﯾث ﺗظﮭر ﻓﻲ ﺣﺎﻟﺔ ﺗﺣرﯾر ﺳطر اﻟﺑﯾﺎﻧﺎت ﻷﺟراء ﺗﻌدﯾل ﻣﺎ ) راﺟﻊ اﻟﻣﺛﺎل اﻟﺳﺎﺑقGridView
: ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ
- 57 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
وارﺑطﮭﺎ ﻣﻊGridView ﺑداﯾﺔ ﻗم ﺑﺈﺿﺎﻓﺔ أداة. EditItemTemplate وﺑﺎﻟﺗﺎﻟﻲ ﻓﺈﻧﻧﺎ ﺳﻧﺗﻌﺎﻣل ﻣﻊ اﻟﻘﺎﻟب
وDepartments ﻧﻘوم ﺑرﺑط اﻟﺟدوﻟﯾنSelect ﺑﺣﯾث ﺿﻣن ﻋﺑﺎرة اﻟـSqlDataSource1 ﻣﺻدر ﺑﯾﺎﻧﺎت
ﻣﻊ ﺑﻌﺿﮭﻣﺎ ) ﻋﺑر اﻟﺣﻘل رﻗم اﻟﻘﺳم ( وذﻟك ﻟﻛﻲ ﻧﺗﻣﻛن ﻣن ﻋرض اﺳم اﻟﻘﺳم ﺿﻣن ﺟدولEmployees
. و ﻗم طﺑﻌﺎ ﺑﺗﻔﻌﯾل ﺧﯾﺎرات اﻟﺗﻌدﯾل واﻟﺣذف ﺿﻣن ﻣﺻدر اﻟﺑﯾﺎﻧﺎتGridView اﻟـ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [employees].[id], [fname], [lname], [deptId], [name]
FROM [employees] inner join [departments] ON [employees].[deptId] = [departments].[id] "
UpdateCommand="UPDATE [employees] SET [fname] = @fname, [lname] = @lname,
[deptId] = @deptId WHERE [id] = @id">
<UpdateParameters>
<asp:Parameter Name="fname" Type="String" />
<asp:Parameter Name="lname" Type="String" />
<asp:Parameter Name="deptId" Type="Int32" />
<asp:Parameter Name="id" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
- 58 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
واﻟﺗﻲ ﺗظﮭر ﺑﻌد اﻟﻧﻘرFields وذﻟك ﻣن اﻟﻧﺎﻓذةTemplateField ﻗم ﺑﻌد ذﻟك ﺑﺈﺿﺎﻓﺔ ﺣﻘل ﺟدﯾد ﻣن اﻟﻧﻣط
و ﻧﺣددEdit Template ﺑﻌد ذﻟك ﻧﺧﺗﺎر. Edit Columns واﺧﺗﯾﺎرGridView اﻷداةsmart tag ﻋﻠﻰ
و ﻧرﺑطﮭﺎ ﻣﻊ ﺟدول اﻷﻗﺳﺎمDropDownList ﺛم ﻧﺿﻊ ﺑداﺧﻠﮫ أداةEditItemTemplate اﻟﻘﺎﻟب
وذﻟك ﺣﺗﻰdeptId اﺳم ﻣﺳﺗﻌﺎر وﻟﯾﻛنId ﻗم ﺑﺈﻋطﺎء اﻟﺣﻘلselect و ﻟﻛن ﻓﻲ ﻋﺑﺎرة اﻟـDepartments
ﻟﻛﻲ ﻧﺗﻣﻛن ﻣن اﺳﺗﺧدام ﻗﯾﻣﺗﮫ ﻋﻧد ﺗﻌدﯾل رﻗمEmployees ﯾﺗطﺎﺑق ﻣﻊ اﺳم اﻟﻌﻣود اﻟﻣﻘﺎﺑل ﻟﮫ ﺿﻣن اﻟﺟدول
ﻧﺟﻌﻠﮭﺎ ﺗﻌرضLable ﻓﺈﻧﻧﺎ ﺳﻧﺿﯾف أداةItemTemplate أﻣﺎ ﺿﻣن اﻟﻘﺎﻟب. اﻟﻘﺳم اﻟﺧﺎص ﺑﻣوظف ﻣﺎ
: اﺳم اﻟﻘﺳم ﻛﻣﺎ ﯾوﺿﺢ ﻛود اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Eval("name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="SqlDataSource2" DataTextField="name"
DataValueField="deptId"
SelectedValue='<%# Bind("deptId") %>'
>
</asp:DropDownList>
</EditItemTemplate>
- 59 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
</asp:TemplateField>
</Columns>
</asp:GridView>
: واﻟﺗﻲ ﯾﻣﻛن ﺗﻘﺳﯾﻣﮭﺎ إﻟﻰ ﺛﻼث ﻣﺟﻣوﻋﺎت, Events ﻣﺟﻣوﻋﺔ ﻛﺑﯾرة ﻣن اﻷﺣداثGridView ﺗطﻠق اﻷداة
ً ﻣﻊ ﻣﺻدر اﻟﺑﯾﺎﻧﺎت واﻧﺗﮭﺎءاGridView اﻷﺣداث اﻟﺗﻲ ﯾﺗم إطﻼﻗﮭﺎ ﺑدءاً ﻣن رﺑط اﻷداة: اﻟﻣﺟﻣوﻋﺔ اﻷوﻟﻰ
: وھذه اﻷﺣداث ھﻲ, ﺑﻌرض اﻟﺑﯾﺎﻧﺎت
GridView ﻣﺟﻣوﻋﺔ اﻷﺣداث اﻟﺗﻲ ﺗﺗﻌﻠق ﺑﺎﺧﺗﯾﺎر أو ﺗﻌدﯾل ﺳطر اﻟﺑﯾﺎﻧﺎت ﺿﻣن اﻷدة: اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻧﯾﺔ
: وھذه اﻷﺣداث ھﻲ, وھﻲ اﺳﺗﺟﺎﺑﺔ ﻟﻔﻌل ﻗﺎم ﺑﮫ اﻟﻣﺳﺗﺧدم
- 60 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
اﻟﻣﺟﻣوﻋﺔ اﻟﺛﺎﻟﺛﺔ :اﻷﺣداث اﻟﺗﻲ ﺗﺗﻌﻠق ﺑﺗرﺗﯾب اﻟﺑﯾﺎﻧﺎت أو ﺗﻘﺳﯾﻣﮭﺎ إﻟﻰ ﻋدة ﺻﻔﺣﺎت وھﻲ :
ﺳﻧﻘوم ﺿﻣن ھذه اﻟﻔﻘرة ﺑﺗطﺑﯾق ﻣﺛﺎل ﻟﺗوﺿﯾﺢ ﻋﻣل اﻟﺣدث , RowDataBoundﺣﯾث ﺳﻧﻘوم ﺑﺟﻌل أﺳطر
اﻟﻣوظﻔﯾن اﻟﻣﺗزوﺟﯾن ﺗظﮭر ﺑﺎﻟﻠون اﻷﺻﻔر ,ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة اﻟﺗﺎﻟﯾﺔ :
- 61 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
ﺑﻌد اﻻﻧﺗﮭﺎء ﻣن ذﻟك, و ارﺑطﮭﺎ ﻣﻊ ﺟدول اﻟﻣوظﻔﯾنGridView ﻗم ﺑﺈﻧﺷﺎء ﺻﻔﺣﺔ ﺟدﯾدة و أﺿف إﻟﯾﮭﺎ أداة
GridView اﻟﺧﺎص ﺑﺎﻷداةRowDataBound ﻗم ﺑﻛﺗﺎﺑﺔ اﻟﻛود اﻟﺗﺎﻟﻲ ﺿﻣن اﻟﺣدث
C# ﻛود
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
bool marriage = (bool)DataBinder.Eval(e.Row.DataItem, "marriage");
if (marriage)
e.Row.BackColor = System.Drawing.Color.Yellow;
}
}
VB ﻛود
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As
GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim marriage As Boolean = CType(DataBinder.Eval(e.Row.DataItem, "marriage"),
Boolean)
If marriage Then
e.Row.BackColor = System.Drawing.Color.Yellow
End If
End If
End Sub
وﺑﺎﻟﺗﺎﻟﻲ ﻧﻔﺣص, ﻣﻊ ﺳﺟل اﻟﺑﯾﺎﻧﺎتGridView ﻻﺣظ ﺑﺄن اﻟﻛود اﻟﺳﺎﺑق ﯾﻌﻣل ﺑﻌد رﺑط ﻛل ﺳطر ﺿﻣن اﻟـ
أﻣﺎ اﻟﺳطر. “ ﯾﺗم ﺗﻠوﯾن اﻟﺳطر اﻟﺣﺎﻟﻲ ﺑﺧﻠﻔﯾﺔ ﺻﻔراءTrue” “ ﻓﺈن ﻛﺎﻧت ﻗﯾﻣﺗﮫmarriage” ﻗﯾﻣﺔ اﻟﺣﻘل
اﻟذي وﺿﻌﻧﺎه ﻓﻲ أول اﻟﻛود ﻓﮭو ﯾﻔﺣص أن اﻟﺳطر اﻟﺣﺎﻟﻲ ھو ﺳطر ﺑﯾﺎﻧﺎت و ذﻟك ﺣﺗﻰ ﯾﺗم اﺳﺗﺛﻧﺎء ﺳطر
ﻓﮭو اﻟذي ﯾﻘوم ﺑرﺑط ﺳﺟل اﻟﺑﯾﺎﻧﺎت ﻣن ﻣﺻدرDataBinder أﻣﺎ اﻟﺻف. اﻟﻌﻧﺎوﯾن ﻣن اﻟﻛود اﻟﺳﺎﺑق
ﻟذﻟك ﻗﻣﻧﺎ ﺑﺎﺳﺗﺧداﻣﮭﺎ ﻟﻠوﺻول إﻟﻰ, Eval() وذﻟك ﻋﺑر اﻟداﻟﺔGridView اﻟﺑﯾﺎﻧﺎت ﻣﻊ ﺳطر ﺿﻣن اﻷداة
. “marriage” ﻗﯾﻣﺔ اﻟﺣﻘل
: ﻛود اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1"
onrowdatabound="GridView1_RowDataBound" >
- 62 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
<Columns>
<asp:BoundField DataField="id" HeaderText="id" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="fname" HeaderText="fname"
SortExpression="fname" />
<asp:BoundField DataField="lname" HeaderText="lname"
SortExpression="lname" />
<asp:CheckBoxField DataField="marriage" HeaderText="marriage"
SortExpression="marriage" />
<asp:BoundField DataField="salary" HeaderText="salary"
SortExpression="salary" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [employees]" />
</div>
GridViewRow وھﻲ ﺧﺻﺎﺋص ﺗﺗﺑﻊ ﻟﻠﺻفRowType , DataItem ﺿﻣن اﻟﻣﺛﺎل اﻟﺳﺎﺑق اﺳﺗﺧدﻣﻧﺎ
: ﺣﯾث إﻧﮫ ﯾﺣﺗوي ﻋﻠﻰ اﻟﺧﺻﺎﺋص اﻟﺗﺎﻟﯾﺔ
. ﺗﻣﺛل ﻣﺟﻣوﻋﺔ ﺧﻼﯾﺎ اﻟﺳطر اﻟﺣﺎﻟﻲ ﺣﯾث ﯾﻣﻛن اﻟوﺻول ﻟﻘﯾﻣﺔ ﻛل ﺧﻠﯾﺔ ﻣﻧﮭﺎ: Cells
. ﯾﻣﺛل ﺳﺟل اﻟﺑﯾﺎﻧﺎت اﻟذي ﯾﺗم رﺑطﮫ ﻣﻊ ﺳطر اﻟﺑﯾﺎﻧﺎت اﻟﺣﺎﻟﻲ: DataItem
. ﯾﻣﺛل دﻟﯾل اﻟﺳطر اﻟﺣﺎﻟﻲ: RowIndex
DataRow, ﯾﻣﺛل ﻧﻣط اﻟﺳطر اﻟﺣﺎﻟﻲ ﺣﯾث ﯾﻣﻛن أن ﯾﺄﺧد إﺣدى اﻟﻘﯾم اﻟﺗﺎﻟﯾﺔ: RowType
. Header, Footer, NullRow, Pager, Separator
ﻣﺛﻼ ﻟﻧﻔﺗرض أﻧﻧﺎ, آﺧرGridView داﺧلGridView ھﻧﺎك اﻟﻌدﯾد ﻣن اﻟﺣﺎﻻت اﻟﺗﻲ ﻧﺣﺗﺎج ﻓﯾﮭﺎ ﻟوﺿﻊ
: ﻛﻣﺎ ﺗوﺿﺢ اﻟﺻورة, ﻧرﯾد ﻋرض اﻷﻗﺳﺎم اﻟﺗﻲ ﻟدﯾﻧﺎ و ﺗﺣت ﻛل ﻗﺳم ﯾﺗم ﻋرض اﻟﻣوظﻔﯾن اﻟﻌﺎﻣﻠﯾن ﻓﯾﮫ
- 63 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
وإﺿﺎﻓﺔ ﺣﻘل ﻣن اﻟﻧﻣط, اﻟﺧﺎرﺟﻲ ورﺑطﮫ ﻣﻊ ﺟدول اﻷﻗﺳﺎمGridView ﺗﻛﻣن اﻟﻔﻛرة ﺑﺑﺳﺎطﺔ ﺑوﺿﻊ اﻟـ
آﺧر و ﻧرﺑطﮫ ﻣﻊ ﺟدول اﻟﻣوظﻔﯾن و ﻧﺿﯾف ﻋﻠﯾﮫGridView إﻟﯾﮫ وﻧﺿﯾف ﺿﻣﻧﮫTemplateField
ھذا اﻟﻣﺗﺣول ﺳﻧﻘوم ﺑﺗﻐﯾﯾر ﻗﯾﻣﺗﮫ ﻋﻧد ﻛل إطﻼق ﺣدث, ﺷرط أن ﯾﻛون رﻗم اﻟﻘﺳم ﻣﺳﺎوي ﻟﻘﯾﻣﺔ ﻣﺗﺣول ﻣﺎ
. اﻟﺧﺎرﺟﻲ ﺑﺣﯾث ﻧﺟﻌﻠﮫ ﯾﺳﺎوي ﻗﯾﻣﺔ رﻗم اﻟﻘﺳم اﻟﺣﺎﻟﻲGridView ﺿﻣن اﻟـRowDataBound
: ﻛود اﻟﺻﻔﺣﺔ
ASP.net ﻛود
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1" ShowHeader="False"
onrowdatabound="GridView1_RowDataBound" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<center>
<h2><%#Eval("name") %></h2>
<asp:GridView ID="GridView2" runat="server"
AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="empDataSource">
<Columns>
- 64 -
GridView اﺳﺗﺧدام اﻷداة اﻟﻔﺻل اﻟﺛﺎﻣن
C# ﻛود
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
int departmentId = (int)DataBinder.Eval(e.Row.DataItem, "id");
SqlDataSource empDataSource =
(SqlDataSource)e.Row.FindControl("empDataSource");
empDataSource.SelectParameters["deptId"].DefaultValue =
departmentId.ToString();
}
}
- 65 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
ﻛود VB
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As
)GridViewRowEventArgs
If e.Row.RowType = DataControlRowType.DataRow Then
Dim departmentId As Integer = CType(DataBinder.Eval(e.Row.DataItem, "id"),
)Integer
= Dim empDataSource As SqlDataSource
)CType(e.Row.FindControl("empDataSource"), SqlDataSource
= empDataSource.SelectParameters("deptId").DefaultValue
)(departmentId.ToString
End If
End Sub
ﺣﯾث ﯾﺗم ﺗﻐﯾﯾر ﻗﯾﻣﺔ اﻟﺑﺎراﻣﺗر deptIdﻋﻧد ﻛل ﻋﻣﻠﯾﺔ رﺑط ﺳﺟل ﺟدﯾد ﻣن اﻟﺟدول Departmentsﻣﻊ
ﺳطر ﻣن اﻷداة . GridView
اﻟﺧﺎﺗﻣﺔ
إﻟﻰ ھﻧﺎ ﻧﺄﺗﻲ إﻟﻰ ﻧﮭﺎﯾﺔ ھذا اﻟﻔﺻل اﻟطوﯾل واﻟﻣﺗﻌدد اﻷﻓﻛﺎر ﻟﻠﺗﻌﺎﻣل ﻣﻊ اﻷداة , GridViewإن اﻟﻛﺛﯾر ﻣن
اﻟﻣواﺿﯾﻊ اﻟﺗﻲ ﻧﺎﻗﺷﻧﺎھﺎ ﯾﻣﻛن أن ﯾﺗم ﺗطﺑﯾﻘﮭﺎ ﺑﺎﺳﺗﺧدام أدوات اﻟﺑﯾﺎﻧﺎت اﻷﺧرى ﻣﺛل DataListو
Repeaterوﻏﯾرھم ﻣن اﻷدوات اﻟﺗﻲ ﺳﻧﻧﺎﻗﺷﮭﺎ ﺑﺎﻟﺗﻔﺻﯾل ﺿﻣن ﻓﺻول ﻗﺎدﻣﺔ .إن أدوات اﻟﺗﺣﻛم ﺑﺎﻟﺑﯾﺎﻧﺎت
ﺗﻣﺛل ﺟزء ﻛﺑﯾر ﻣن ﻋﺎﻟم ﺗطوﯾر ﻣواﻗﻊ وﺗطﺑﯾﻘﺎت اﻻﻧﺗرﻧت ,وھذا اﻟﻔﺻل ﺳﯾﻛون ﻗﺎﻋدة ﻧﻌﺗﻣد ﻋﻠﯾﮭﺎ أﺛﻧﺎء
اﻟﻔﺻول اﻟﻘﺎدﻣﺔ ﺣﺗﻰ ﻻﻧﻛرر ﻧﻔس اﻷﻓﻛﺎر ,ﻟذﻟك أرﺟو ﺗطﺑﯾق واﺳﺗﯾﻌﺎب ﺟﻣﯾﻊ اﻷﻓﻛﺎر واﻷﻣﺛﻠﺔ اﻟﺗﻲ ﺗﻣت
ﻣﻧﺎﻗﺷﺗﮭﺎ .وﷲ وﻟﻲ اﻟﺗوﻓﯾق .
- 66 -
اﺳﺗﺧدام اﻷداة GridView اﻟﻔﺻل اﻟﺛﺎﻣن
https://www.mediafire.com/folder/u44z9omx9ajjv/asp.net
http://www.4shared.com/folder/i34_lCo0/ASP.html
أو اﻟﺑﺣث ﻓﻲ Googleﻋن :ﻣﺣﻣد ﻋﻣر اﻟﺣﺎج ﺧﻠف -أو ASP.NET -ﺧطوة ﺑﺧطوة ﺣﺗﻰ اﻻﺣﺗراف
ﻟﻠﺗواﺻل :
m-hajjkhalaf@hotmail.com
http://www.facebook.com/mohammed.hajkhalaf
- 67 -