تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مثال] CheckAll & UnCheck في الجريد فيو ASP.Net
#1
السلام عليكم
هيا نخربش قليللاً على ASP.Net  Shy
اذا كنت -وهذا أكيد - تحتاج لعمل جريد فيو يكون بها تشك بوكس وتود اجراء العمليات بدلالة حالة التشك بوكس
والله يا جماعة احس تعريب اسماء الكائنات مع إني عربي قحّ  Tongue  يتعبني المهم تابع معي
افتح الفيجوال عندك واختر اللغة اللي انت تحب تشتغل عليها بيسك أو سي السيد قصدي سي شارب
web -- ASP.Net  Empty
اضف صفحة جديدة وركز ان صفحة الكود تكون معها ولو من دونها ما تفرق بس تعودنا على صفحة ديزاين وصفحة كتابة كود
المهم
كود الصفحة الجديدة

PHP كود :
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>



<!
DOCTYPE html>

<
html xmlns="http://www.w3.org/1999/xhtml">
<
head runat="server">
    <title>Gridvie wWith checkBox</title>
</
head>
<
body>
    <form id="form1" runat="server">
    

    
</form>
</
body>
</
html
الان من الادوات اضف Gridview واضف في الجريد تمبليت فارغ وبرضو ادخل في التمبليت اثنين تشك بوكس واحد في الهيدر والثاني في الايتمItem
بهذا الشكل
PHP كود :
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" ShowFooter="True">
 
           <AlternatingRowStyle BackColor="White" />
 
           <Columns>
 
               <asp:TemplateField HeaderText="Check">
 
                   <FooterTemplate>
 
                       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="تصفية" Width="191px" />
 
                   </FooterTemplate>
 
                   <HeaderTemplate>
 
                       <asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox2_CheckedChanged" />
 
                   </HeaderTemplate>
 
                   <ItemTemplate>
 
                       <asp:CheckBox ID="CheckBox1" runat="server" />
 
                   </ItemTemplate>
 
               </asp:TemplateField>
 
           </Columns>
 
           <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 
           <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 
           <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
 
           <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
 
           <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
 
           <SortedAscendingCellStyle BackColor="#FDF5AC" />
 
           <SortedAscendingHeaderStyle BackColor="#4D0000" />
 
           <SortedDescendingCellStyle BackColor="#FCF6C0" />
 
           <SortedDescendingHeaderStyle BackColor="#820000" />
 
       </asp:GridView
اوكي اعرف ان الشرح غير مفصل عشان نقدر نرغي في الاسئلة شوية
الان نروح للصفحة في وضع التصميم وندوس عليها عشان نروج للبيج لود
ويكون الكود اللي هنكتبه هناك بهذا الشكل
PHP كود :
Protected Sub Page_Load(sender As ObjectAs EventArgsHandles Me.Load
        Page
.Culture "ar-SA" 'لجعل الصفحة تتعامل مع النظام العربي كأسماء الايام والشهور الخ
        If Not IsPostBack Then
            '
في حال تحميل الصفحة قبل اي حدث يستدعي البوست باك
            Dim dt 
As New DataTable() 'كأننا وصعنا جدول 

            dt.Columns.Add("Date") '
كأنه اسم الحقل داخل الجدول
            dt
.Columns.Add("Day_Name")
 
           For i 0 To 6 ' فقط نريدعدد اام الاسبوع تكون كسجلات
                Dim f As Date = Date.Today.AddDays(i) '
لاضافة التواريخ بشكل متوالي نبدأ من تاريخ اليوم
                Dim dates 
As String f.ToString("dd/MM/yyyy"'التحكم في شكل وهيئة التاريخ
                Dim ff As String = f.ToString("dddd") ' 
لاضافة اسم اليوم مكتوباُ
                dt
.Rows.Add(datesff' نقوم بادراج السجلات كما ترى لدينا فقط سجلين التارخ واسم اليوم
            Next
            '
نجعل الجدول يكون مصدر للبيانات في الرجيد
            GridView1
.DataSource dt.AsDataView
            
'نأمر الجريد بأخذ القيم واعرضها للمستحدم
            GridView1.DataBind()
        End If
    End Sub 
طيب الان عندنا button واثنين تشك بوكس في الجريد والكود اضاف لنا ايام الاسبوع بالعربي والتواريخ وجنب كل منها تشك بوكس
يبقى لنا نوصل لهذي العناصر ونخليها تنفذ اي اجراء نوده
طيب بالنسبة للتشك بوكس اللي في الهيدر ارجع للصفحة في وضع التصميم واضغط على الجريد راح تلاقي طلع لك سهم صغير تدوسه تلطع لك قائمة صغيرة
اختر منها Edit Templates
ومن هناك توصل للتشك بوكس دوس عليها وشوف في الخصائص خلي autopostabck = true
ودوس عليها دبل كلك ونروح للكود ويكون كالتالي
PHP كود :
Protected Sub CheckBox2_CheckedChanged(sender As ObjectAs EventArgs)
 
       'للوصول الى التشك بوكس في رأس الجريد
        Dim chh As CheckBox = GridView1.HeaderRow.FindControl("CheckBox2")
        '
نستطيع الوصول للعناصر داخل الجريد اما بحساب عدد السجلات بها كما في هذا الكود أو بطريقة اخرى تجدها في كود الزر تصفية وكل الطرق تودي فين؟ لا للحل ماهو لروما هههههههههههههههه
        For i 
0 To GridView1.Rows.Count 1
            
'الان نبحث عن كل تشك بوكس حسب الانكدس تبع السجل
            Dim ch As CheckBox = GridView1.Rows(i).FindControl("CheckBox1")
            '
نقوم بتنفيذ الحدث اللي يهمنا وهو تحديد الشك بوكس وتأخذ نفس حالة التشك اللي في رأس الجريد
            ch
.Checked chh.Checked
        Next
    End Sub 
نفس الشي مع البوتون او الزر او الزرار شقى المهم
ندوسه ونضع له الكود التالي
PHP كود :
Protected Sub Button1_Click(sender As ObjectAs EventArgs)
 
       ' كما أشرنا سابقاً عن تعدد طرق الوصول للعناصر أو للكائنات داخل الجريد هنا نمر على كل سجل for each
        For Each row As GridViewRow In GridView1.Rows
            Dim ch As CheckBox = row.FindControl("CheckBox1")
            ' 
اذا كان السجل متعلم عليه يا معلم اخفيه عن نظر المستخدم
            If ch
.Checked Then row.Visible False
        Next
    End Sub 
الان صفحة ثانية لكن على c sharp
في نفس المشروع وليكن اسمها Default2.aspx
PHP كود :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!
DOCTYPE html>
<
script runat="server">



</
script>


<
html xmlns="http://www.w3.org/1999/xhtml">
<
head runat="server">
 
   <title>Gridvie wWith checkBox</title>
</
head>
<
body>
 
   <form id="form1" runat="server">
 
   <div>
 
   
        
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" ShowFooter="True">
 
           <AlternatingRowStyle BackColor="White" />
 
           <Columns>
 
               <asp:TemplateField HeaderText="Check">
 
                   <FooterTemplate>
 
                       <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="تصفية" Width="191px" />
 
                   </FooterTemplate>
 
                   <HeaderTemplate>
 
                       <asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox2_CheckedChanged" />
 
                   </HeaderTemplate>
 
                   <ItemTemplate>
 
                       <asp:CheckBox ID="CheckBox1" runat="server" />
 
                   </ItemTemplate>
 
               </asp:TemplateField>
 
           </Columns>
 
           <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 
           <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
 
           <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
 
           <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
 
           <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
 
           <SortedAscendingCellStyle BackColor="#FDF5AC" />
 
           <SortedAscendingHeaderStyle BackColor="#4D0000" />
 
           <SortedDescendingCellStyle BackColor="#FCF6C0" />
 
           <SortedDescendingHeaderStyle BackColor="#820000" />
 
       </asp:GridView>
 
       <br />
 
   
    
</div>
 
   </form>
</
body>
</
html
وفي صفحة الكود الخلفي
PHP كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Data;
/// <summary>
/// VB4Arab.com
/// أبو عمر 
/// 2016/9/16
/// </summary>
partial class Default2 System.Web.UI.Page
{
 
   protected void  // ERROR: Handles clauses are not supported in C#
Page_Load(object senderEventArgs e)
 
   {
 
       Page.Culture "ar-SA";
 
       //لجعل الصفحة تتعامل مع النظام العربي كأسماء الايام والشهور الخ
 
       if (!IsPostBack)
 
       {
 
           //في حال تحميل الصفحة قبل اي حدث يستدعي البوست باك
 
           DataTable dt = new DataTable();
 
           //كأننا وصعنا جدول 

 
           dt.Columns.Add("Date");
 
           //كأنه اسم الحقل داخل الجدول
 
           dt.Columns.Add("Day_Name");
 
           // فقط نريدعدد اام الاسبوع تكون كسجلات
 
           for (int i 0<= 6i++)
 
           {
 
               System.DateTime f System.DateTime.Today.AddDays(i);
 
               //لاضافة التواريخ بشكل متوالي نبدأ من تاريخ اليوم
 
               string dates f.ToString("dd/MM/yyyy");
 
               //التحكم في شكل وهيئة التاريخ
 
               string ff f.ToString("dddd");
 
               // لاضافة اسم اليوم مكتوباُ
 
               dt.Rows.Add(datesff);
 
               // نقوم بادراج السجلات كما ترى لدينا فقط سجلين التارخ واسم اليوم
 
           }
 
           //نجعل الجدول يكون مصدر للبيانات في الرجيد
 
           GridView1.DataSource dt.AsDataView ();
 
           //نأمر الجريد بأخذ القيم واعرضها للمستحدم
 
           GridView1.DataBind();
 
       }
 
   }

 
   protected void CheckBox2_CheckedChanged(object senderEventArgs e)
 
   {
 
       //للوصول الى التشك بوكس في رأس الجريد
 
       CheckBox chh = (CheckBox)GridView1.HeaderRow.FindControl("CheckBox2");
 
       //نستطيع الوصول للعناصر داخل الجريد اما بحساب عدد السجلات بها كما في هذا الكود أو بطريقة اخرى تجدها في كود الزر تصفية وكل الطرق تودي فين؟ لا للحل ماهو لروما هههههههههههههههه
 
       for (int i 0<= GridView1.Rows.Count 1i++)
 
       {
 
           //الان نبحث عن كل تشك بوكس حسب الانكدس تبع السجل
 
           CheckBox ch =(CheckBoxGridView1.Rows[i].FindControl("CheckBox1");
 
           //نقوم بتنفيذ الحدث اللي يهمنا وهو تحديد الشك بوكس وتأخذ نفس حالة التشك اللي في رأس الجريد
 
           ch.Checked chh.Checked;
 
       }
 
   }

 
   protected void Button1_Click(object senderEventArgs e)
 
   {
 
       // كما أشرنا سابقاً عن تعدد طرق الوصول للعناصر أو للكائنات داخل الجريد هنا نمر على كل سجل for each
 
       foreach (GridViewRow row in GridView1.Rows)
 
       {
 
           CheckBox ch = (CheckBox)row.FindControl("CheckBox1");
 
           // اذا كان السجل متعلم عليه يا معلم اخفيه عن نظر المستخدم
 
           if (ch.Checked)
 
               row.Visible false;
 
       }
 
   }


النتيجة هكذا




اذا اردت اسماء الايام تظهر بالعربي تابع الشرح اعلاه
وصلى الله وسلم على سيدنا محمد وعلى آله وصحبه أجمعين وارض اللهم على ابي بكر وعمر وعثمان وعلي ومن تبعهم الى يوم الدين
كتبت ما قرأتم فلاتنسوا أخاكم من دغوة طيبة في هذا اليوم المبارك
اللهم انفعهم بما كتبت وآجرني عليه خيراً  Heart
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد }}}
#2
صلى الله و بارك على سيدنا محمد و على آله و صحبه الطيبين الطاهرين

ما شاء الله عليك وربي يحفظك ابو عمر
الرد }}}
تم الشكر بواسطة: أبو عمر , أبو عمر , rnmr


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم