الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعامل مع Asp.net AjaxToolKit Accordion باحترافية

بدأه باسل بوشناق في 29 أغسطس 2011 · 5 رد · 1,029 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سأنشر إن شاء الله مجموعة من الأكواد و الطرق للتعامل مع هذه الأداة :

كما ورد في شرح هذه الأداة من AjaxToolKit : إنها تحتوي على عدة ألواح (Pane) تستطيع أن تعرض واحدة منها فقط كل مرة

لنرى في البداية كيفية وضع Accordion من خلال Source Code :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Accordion Tips and Tricks</title>
    <style type="text/css">
        .accordionHeader
        {
            color: white;
            background-color: #719DDB;
            font: bold 11px auto "Trebuchet MS", Verdana;
            font-size: 12px;
            cursor: pointer;
            padding: 4px;
            margin-top: 3px;
        }
        .accordionContent
        {
            background-color: #DCE4F9;
            font: normal 10px auto Verdana, Arial;
            border: 1px gray;                
            padding: 4px;
            padding-top: 7px;
        }
</style>

<script type="text/javascript">
    // Add the scripts shown in the tips over here
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>  

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

        <cc1:Accordion ID="AccordionCtrl" runat="server" 
        SelectedIndex="0" HeaderCssClass="accordionHeader"
        ContentCssClass="accordionContent" AutoSize="None" 
        FadeTransitions="true">
            <Panes>
                <cc1:AccordionPane ID="AccordionPane0" runat="server">
                    <Header>Pane 1</Header>
                    <Content>
                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
                        sed do eiusmod tempor incididunt ut labore et dolore magna 
                        aliqua. 
                    </Content>
                </cc1:AccordionPane>
                <cc1:AccordionPane ID="AccordionPane1" runat="server">
                    <Header>Pane 2</Header>
                    <Content>
                        Ut enim ad minim veniam, quis nostrud exercitation ullamco 
                        laboris nisi ut aliquip ex ea commodo consequat. 
                    </Content>
                </cc1:AccordionPane>
                <cc1:AccordionPane ID="AccordionPane2" runat="server">
                    <Header>Pane 3</Header>
                    <Content>
                        Duis aute irure dolor in reprehenderit in voluptate velit 
                        esse cillum dolore eu fugiat nulla pariatur.
                    </Content>               
                </cc1:AccordionPane>
                <cc1:AccordionPane ID="AccordionPane3" runat="server">
                    <Header>Pane 4</Header>
                    <Content>
                        Excepteur sint occaecat cupidatat non proident, sunt in 
                        culpa qui officia deserunt mollit anim id est laborum.
                    </Content>
                </cc1:AccordionPane>
            </Panes>
        </cc1:Accordion>        
    </div>
    </form>
</body>
</html>

1- نرى تحت كود تعريف الصفحة سطر يتضمن كود تعريف هذه الأداة و عند سحب الأداة و إفلاتها فإن هذا الكود سيتولد تلقائياً

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

2- و أيضا كود الستايل الخاص بالأداة , و نستطيع وضع كود الستايل في صفحة مستقلة أو ضمن صفحة Source

في السطر رقم 1 التابع المخصص لإعطاء الستايل إلى المعلومات في راس الاداة

و في السطر رقم 11 التابع المخصص لإعطاء الستايل إلى المحتوى

0-	<style type="text/css">
1-	        .accordionHeader
2-	        {
3-	            color: white;
4-	            background-color: #719DDB;
5-	            font: bold 11px auto "Trebuchet MS", Verdana;
6-	            font-size: 12px;
7-	            cursor: pointer;
8-	            padding: 4px;
9-	            margin-top: 3px;
10-	        }
11-	        .accordionContent
12-	        {
13-	            background-color: #DCE4F9;
14-	            font: normal 10px auto Verdana, Arial;
15-	            border: 1px gray;                
16-	            padding: 4px;
17-	            padding-top: 7px;
18-	        }
19-	</style>

3- يتم استدعاء هذين التابعين مباشرة من :

        <cc1:Accordion ID="AccordionCtrl" runat="server" 
        SelectedIndex="0" 
HeaderCssClass="accordionHeader"          ستايل الرأس
ContentCssClass="accordionContent"      ستايل المحتوى
AutoSize="None" 
    FadeTransitions="true">

4- و قبل وضع هذه الأداة يجب علينا وضع ScriptManager في بداية الكود و قبل كل شيء

 <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

5- و هذا كود توليد الأداة Accordion

في السطر 0 و هي الأداة التي تحوي الألواح (Panes ) و يستدعى فيها كما سبق الستايلات

في السطر 4 نضع الخاصية <pane> لوضع داخلها العدد الذي نريده من AccordionPane

وبعد وضع أول AccordionPane نضمن بداخلها في السطر 6 النص الذي نريده أن يظهر في رأس الاداة

و في السطر 7 حتى 11 نضع النص الذي نريده أن يظهر في محتوى الأداة

و نكرر نفس العملية بالنسبة للباقي

0-	<cc1:Accordion ID="AccordionCtrl" runat="server" 
1-	        SelectedIndex="0" HeaderCssClass="accordionHeader"
2-	        ContentCssClass="accordionContent" AutoSize="None" 
3-	        FadeTransitions="true">
4-	            <Panes>
5-	                <cc1:AccordionPane ID="AccordionPane0" runat="server">
6-	                    <Header>Pane 1</Header>
7-	                    <Content>
8-	                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
9-	                        sed do eiusmod tempor incididunt ut labore et dolore magna 
10-	                        aliqua. 
11-	                    </Content>
12-	                </cc1:AccordionPane>
13-	                <cc1:AccordionPane ID="AccordionPane1" runat="server">
14-	                    <Header>Pane 2</Header>
15-	                    <Content>
16-	                        Ut enim ad minim veniam, quis nostrud exercitation ullamco 
17-	                        laboris nisi ut aliquip ex ea commodo consequat. 
18-	                    </Content>
19-	                </cc1:AccordionPane>
20-	                <cc1:AccordionPane ID="AccordionPane2" runat="server">
21-	                    <Header>Pane 3</Header>
22-	                    <Content>
23-	                        Duis aute irure dolor in reprehenderit in voluptate velit 
24-	                        esse cillum dolore eu fugiat nulla pariatur.
25-	                    </Content>               
26-	                </cc1:AccordionPane>
27-	                <cc1:AccordionPane ID="AccordionPane3" runat="server">
28-	                    <Header>Pane 4</Header>
29-	                    <Content>
30-	                        Excepteur sint occaecat cupidatat non proident, sunt in 
31-	                        culpa qui officia deserunt mollit anim id est laborum.
32-	                    </Content>
33-	                </cc1:AccordionPane>
34-	            </Panes>
35-	        </cc1:Accordion>

كيف تضيف Accordion Pane الى Accordion برمجياً من خلال كود JavaScript

How to Add an ASP.NET AJAX Accordion Pane at Runtime

في السطر 1 نضع tag بداية كود Javascript حيث نخبر الكومبايلر أن هذا الكود هو JavaScript كما هو موضوح

ملاحظة : هذا الكود يجب أن يوضع بين <Head> يوضع الكود هنا </Head> و لا يجب أن يوضع في الفورم و إلا لن يعمل .

في السطر 2 نضع حدث بداية تحميل الصفحة و نضع فيه استدعاء للتابع الذي نريده أن يضيف AccordionPane برمجيا

في السطر 7 تعريف للتابع و يحتوي على :

في 9 عليه إيجاد الأداة التي يجب أن يضيف إليها Pane

في 11 النص الذي سيظهر في الرأس

في 12 تعريف نوع كلاس الاضافة

في 14 النص الذي سيظهر في المحتوى

في 15 تعريف نوع كلاس الاضافة

في 16 – 17 نضيف عنصري الرأس و المحتوى إلى الأداة المراد الإضافة إليها

في 18 إضافة الرأس و المحتوى بعد تعريفهما في الأداة

1-	<script type="text/javascript">
2-	        function pageLoad()
3-	        {
4-	            AddPaneAtRuntime();
5-	        }
6-	        
7-	        function AddPaneAtRuntime()
8-	        {
9-	            var newAccordion = $find("AccordionCtrl_AccordionExtender");
10-	            var header = document.createElement("div");
11-	            header.innerText = "Pane 5";
12-	            header.className = "accordionHeader"; 
13-	            var content = document.createElement("div");
14-	            content.innerText = " This pane was added using JavaScript";
15-	            content.className = "accordionContent"; 
16-	            newAccordion.get_element().appendChild(header);
17-	            newAccordion.get_element().appendChild(content);
18-	            newAccordion.addPane(header,content);        
19-	        }
20-	 
21-	    </script>

إضافتها من خلال كود c#

في السطر 1 حدث تحميل الصفحة

في السطر 3 إنشاء (instants ) من AccordinPane

في السطر 4 إضافة النص في الرأس

في السطر 5- 6 إضافة النص في المحتوى

في السطر 7 إضافة HeaderContainer و ContentContainer الى AccordinPane

1-	protected void Page_Load(object sender, EventArgs e)
2-	{
3-	    AccordionPane newAccordion = new AccordionPane();
4-	    newAccordion.HeaderContainer.Controls.Add(new LiteralControl("Pane 5"));
5-	    newAccordion.ContentContainer.Controls.Add(new
6-	              LiteralControl("This pane was added using Code Behind"));
7-	    AccordionCtrl.Panes.Add(newAccordion);
8-	}

كيفية إخفاء الأداة من خلال كود javascript

How to Hide an ASP.NET AJAX Accordion Pane at Runtime

<script type="text/javascript">
        function pageLoad()
        {
            hideAccordionPane(1);
        }

        // hides pane 1
        function hideAccordionPane(paneno)
        {
            $find('AccordionCtrl_AccordionExtender').get_Pane(paneno).header.style.display="none";
            $find('AccordionCtrl_AccordionExtender').get_Pane(paneno).content.style.display="none";
        }
    </script>

لا جديد في الكود حيث يبحث عن الأداة من خلال الـ ID و يخفي الرأس و المحتوى كل على حدى ( و يقوم بإخفاء أول Pane)

كيفية توسيع (Expand ) برمجيا دون النقر عليها بالفأرة :

How to programmatically expand an ASP.NET AJAX Accordion Pane

<script type="text/javascript">
        function pageLoad()
        {
            changeSelected(2); // expand pane 3
        }

        // expand given accordion pane
        function changeSelected(idx)
        {
            $find('AccordionCtrl_AccordionExtender').set_SelectedIndex(idx);
        }
    </script>

كيف تعرف الـ Pane التي تم تحديدها

How to determine when an ASP.NET AJAX Accordion Pane has been expanded/selected

<script type="text/javascript">
        function pageLoad()
        {
var accCtrl = $find('AccordionCtrl_AccordionExtender');
            accCtrl.add_selectedIndexChanged(onAccordionPaneChanged);   
        }


        function onAccordionPaneChanged(sender, eventArgs)
        {
            var selPane = sender.get_SelectedIndex() + 1;
            alert('You selected Pane ' + selPane);
        }
    </script>

لجعل الـ Pane تتوسع تلقائياً عند مرور الفأرة عليها .

Expand an ASP.NET AJAX Accordion Pane on MouseOver

<script type="text/javascript">
        function pageLoad()
        {
            AddMouseOverToAccordion();
        }


        function AddMouseOverToAccordion()
        {
            var acc = $find('AccordionCtrl_AccordionExtender');
            for(paneIdx = 0; paneIdx < acc.get_Count(); paneIdx++)
            {           
                $addHandler(acc.get_Pane(paneIdx).header,"mouseover",acc._headerClickHandler);
            } 
        }


    </script>

لمنع توسيع Pane معينة من التوسع

Prevent an ASP.NET AJAX Accordion Pane from Expanding

<script type="text/javascript">
        function pageLoad()
        {
            RemoveHandlerAtRuntime(2);           
        }


        function RemoveHandlerAtRuntime(pane)
        {
             $removeHandler($find('AccordionCtrl_AccordionExtender').get_Pane(pane).header,"click",$find('AccordionCtrl_AccordionExtender')._headerClickHandler);
        }

    </script>

أرجو صالح الدعاء

و السلام عليكم و رحمة الله و بركاته

#2

السلام عليكم ورحمه الله وبركاته

شكرا اخ باسل على المجهود الرائع .. بالتوفيق ..

.:: Wish to become better and better ::.

#3

و عليكم السلام أخي الكريم

إن شاء الله سأكمل شرح ما يوفقني الله إليه .

#4

بعد التفكير لساعات طوال نتج كود أرجو أن يحقق الغاية المطلوبة منه على أتم وجه

سأكمل على مشيئة الله طرق جميلة لتوظيف هذه الأداة في قراءة البيانات و عرضها مثل Repeter و كيف نستطيع تضمين Pager بسيط ليمكننا من عرض عدد معين من المواضيع في كل صفحة على حدى .

وهنا سيكون الشرح تفصيلياً مبسطاً قدر الإمكان لتصل المعلومة بسهولة قدر المستطاع .

نحتاج في تنفيذ الكود التالي إلى وضع في الصفحة أداة ScriptManager Accordion1 - - Asp Table أما الباقي فيتم إنشاءه فبرمجياً

لنفرض أنه لدينا جدول في قاعدة البيانات اسمه AspArtical يحوي على ID , Header , Content ونريد أن يكون العمود Header عنوان للمقالة و العمود Content هو المحتوى .

بعد وضع نص الاتصال في ملف web.config

<connectionStrings>
<add name ="ConnStr" connectionString ="Data Source=اسم السيرفر;Initial Catalog=قاعدة البيانات;Integrated Security=True"/>
</connectionStrings>

نضع في حدث تحميل الصفحة كود اسم الاتصال و فتح الاتصال :

SqlConnection MyConn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
MyConn.Open();

في البداية و قبل كل شيء لمعرفة عدد السجلات الموجودة في الجدول يجب تحديد عدد السجلات في كود SQL :

        String Count_Query = "Select Count(ID) SUM from AspArtical";

و نضمن نص هذا الكود مع اسم الاتصال الموضوع سابقاً في Command على الشكل التالي :

SqlCommand Comm = new SqlCommand(Count_Query, MyConn);

ثم ننشئ SqlReader و نضمنه الأمر السابق ليقوم بقراءة عدد السجلات و عدها حيث سنسد نتيجة عدد السجلات في متغير RowCount لاستخدامها لاحقا

SqlDataReader MyReader = Comm.ExecuteReader();
MyReader.Read();
int RowCount = int.Parse(MyReader["SUM"].ToString());

نوقف عمل القارئ MyReader لأننا سنقوم باستخدامه مجدداً لجلب عمودي Header , Content وتضمينهما في AccordionPane

كود الإغلاق :

MyReader.Close();

ننشئ متغير لحساب عدد AccordionPane (المقالات ) المراد عرضها في كل مرة على حدى .

مثلا لنفرض أنه لدينا 12 مقالة و لا نريد عرض أكثر من 3 مقالات معاً , فنقوم بتقسيم عدد السجلات المسندة إلى المتغير RowCount على 3 كما يلي :

int Div = RowCount / 3;

فينتج عن ذلك عدد السجلات التي سيجلبها القارئ لاحقا .

الآن نريد وضع متغير يحوي عدد AccordionPane التي نريد أن ننشئها و ليكن المتغير Pane_Num و نسند إليه 0 لاستخدامه لاحقا .

int Pane_Num = 0;

ننشئ حلقة سيكون بها بعض التعقيد .

و المتغير الذي ستعتمد الحلقة في تكرارها عليه Acc_Show_Number ويجب أن يكون هذا المتغير مساوياً للمتغير Div لأن الحلقة ستعمل به على إنشاء ثلاثة أمور

1- عدد السجلات التي سيقرأها MyReader و في ذلك تخفيف لعبء قراءة السجلات كاملة ثم الفلترة عليها حيث سيقوم فقط بقراءة السجلات المطلوبة فقط

2- إنشاء AccordionPane و ذلك بنفس عدد السجلات التي قرأها MyReader و التي ستعتمد كما سنرى على قراءة MyReader فلكل سجل يقرأه سننشأ AccordionPane و نضمنه البيانات و عند الانتهاء من القراءة لن ينشأ أي AccordionPane

3- إنشاء HyperLink و ذلك من أجل عملية التصفح بين مجموعات المقالات

ننشئ الحلقة :

for (int Acc_Show_Number = 1; Acc_Show_Number <= Div; Acc_Show_Number++)
        {

نضع الشرط الذي سيسمح بظهور عدد معين للسجلات حسب H_Number الذي سنرى شرحه إن شاء الله لاحقا

if (Request.QueryString["H_Number"] == Acc_Show_Number.ToString())

الآن يجب وضع كود الذي سيجلب عدد السجلات المطلوبة

1-	String Select_Qeury = "select * from AspArtical 
2-	where ID >" + (Acc_Show_Number-1) * 3 
3-	+"and ID <= "+ Acc_Show_Number * 3;

نلاحظ في السطر الأول كود جلب كافة السجلات من الجدول AspArtical

و في السطر الثاني شرط عدم جلب أي سجل رقمه أصغر من رقم الصفحة(التي نريد أن يظهر فيها عدد محدد من المقالات) ناقصاً منها صفحة و مضروباً بـ عدد السجلات التي نريد إظهارها

و في السطر الثالث شرط عدم جلب أي سجل رقمه أكبر من رقم الصفحة مضروباً بعدد السجلات التي نريد إظهارها

مثال :

إذا كان عدد السجلات (المقالات) 12 و كان عدد المقالات التي نريد أن نظهرها 3 فإن عدد الصفحات يجب أن يكون 4

وإذا كان Acc_Show_Number يشير إلى الصفحة الأولى هذا يعني أن قيمته 1 تكون المعادلة :

where ID >" + (Acc_Show_Number-1) * 3 = (1-1) * 3 = 0

أي أنه لن يجلب أي سجل كما في شرط السطر الثاني

أما لإتمام المعادلة فإنه يجب أن نكمل الشرط فكما في شرط السطر الثالث

and ID <= "+ Acc_Show_Number * 3 =1*3=3

أي أنه سيجلب السجلات من 1 إلى 3 فقط و يكون الشرط قد أكتمل

ملاحظة : من المطلوب شرح خطوات الحل لكن هذه الخطوة لن تكتمل فكرتها قبل الوصول إلى نهاية الكود و تجريبه عمليا

الآن نجعل القارئ يقرأ البيانات التي جلبها حسب الشرط السابق

while (MyReader.Read())

{

و لكن في هذه الخطوة علينا وضع البيانات التي سيقرأها MyReader حيث أن عمود Header يجب أن يكون في رأس AccordionPane

و عمود Content في محتوى AccordionPane و نستطيع ذلك بعدة طرق وبعدة متحكمات و سأختار وضعها في Label

حيث أننا يجب وضع Label نسند إليه قيمة العمود Header ثم نضيفها بكاملها في رأس AccordionPane

ونضع Label نسند إليه قيمة العمود Content ثم نضيفها بكاملها في محتوى AccordionPane

كما في الكود التالي : حيث ننشأ labels

Label lbTitle = new Label();
Label lbContent = new Label();

ثم نسند كل من العمودين فيهما

lbTitle.Text = MyReader["Header"].ToString();
lbContent.Text = MyReader["content"].ToString();

الآن سنقوم بإنشاء AccordionPane ونضيف إليها رقمها حيث أنه سيضاف تلقائيا حسب قيمة المتغير Pane_Num

pn.ID = "Pane" + Pane_Num;

ثم نضيف كل من lbTitle و lbContent في AccordionPane المنشأة و نضيفها إلى Accordion1

pn.HeaderContainer.Controls.Add(lbTitle);
pn.ContentContainer.Controls.Add(lbContent);
Accordion1.Panes.Add(pn);

و عند الانتهاء سيقوم MyReader بإعادة العملية حتى يستوفي الشرط المطلوب و قبل أن ننسى نزيد Pane_Num من أجل عدم حدوث خطأ تكرار نفس رقم AccordionPane أكثر من مرة

++Pane_Num;

وصلنا إلى الخطوة الأخيرة و هي إنشاء HyperLink و الذي سيعمل كـ Pager يقوم بالتنقل بين صفحات المقالات

ننشئه و نضع له رقم الصفحة التي يمثلها مع وضع رقم له

HyperLink H = new HyperLink();
H.Text = "Page" + Acc_Show_Number.ToString();
H.ID = Acc_Show_Number.ToString();

في الكود التالي نضع NavigateUrl الخاص بكل HyperLink و الذي سيحوي H_Number الذي سيسند له قيمة رقم HyperLink

ثم نقوم بإضافة كل HyperLink إلى خلية في سطر في جدول asp موضوع سابقا في الصفحة حسب المكان المختار

و آخرا نغلق الاتصال

MyConn.Close();

الكود الكامل :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using AjaxControlToolkit;

public partial class AspControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TableRow MyRow = new TableRow();
        TableCell MyCell = new TableCell();

        Accordion1.Width = 700;
        SqlConnection MyConn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
        MyConn.Open();

        String Count_Query = "Select Count(ID) SUM from AspArtical";  
        SqlCommand Comm = new SqlCommand(Count_Query, MyConn);
        // Count Row with MyReader
        SqlDataReader MyReader = Comm.ExecuteReader();
        MyReader.Read();
        int RowCount = int.Parse(MyReader["SUM"].ToString()); // to count row
        MyReader.Close();

        int Pane_Num = 0;     // This is just to use for assigning pane an id
        double Div = RowCount / 3.00;

        for (int Acc_Show_Number = 1; Acc_Show_Number <= Div; Acc_Show_Number++)
        {
            if (Request.QueryString["H_Number"] == Acc_Show_Number.ToString())
            {
                // start the Data Read
                String Select_Qeury = "select * from AspArtical where ID >" + (Acc_Show_Number-1) * 3 +"and ID <= "+ Acc_Show_Number * 3;
                Comm = new SqlCommand(Select_Qeury, MyConn);
                MyReader = Comm.ExecuteReader();
                while (MyReader.Read())
                {
                    Label lbTitle = new Label();
                    Label lbContent = new Label();
                    lbTitle.Text = MyReader["Header"].ToString();
                    lbContent.Text = MyReader["content"].ToString();
                    AccordionPane pn = new AccordionPane();
                    pn.ID = "Pane" + Pane_Num;
                    pn.HeaderCssClass = "accordionHeader";
                    pn.ContentCssClass = "accordionContent";
                    pn.HeaderContainer.Controls.Add(lbTitle);
                    pn.ContentContainer.Controls.Add(lbContent);
                    Accordion1.Panes.Add(pn);
                    ++Pane_Num;
                }
            }
            HyperLink H = new HyperLink();
            H.Text = "Page" + Acc_Show_Number.ToString();
            H.ID = Acc_Show_Number.ToString();
            H.NavigateUrl = @"~/Default.aspx/?H_Number=" + Acc_Show_Number.ToString();
            MyCell.Controls.Add(H);
            MyRow.Controls.Add(MyCell);
            Table1.Controls.Add(MyRow);
        }
            MyConn.Close();

    }

}

-----------------------------------------------------------------------------------------------------------

bbushanck@hotmail.com

#147896325#

1
#5

السلام عليكم ورحمه الله وبركاته

شكرا على المجهود الرائع .. في انتظار المزيد من الابداع ..

.:: Wish to become better and better ::.

#6

نسيت كتابة كود هذا الشرح :

اقتباس

في الكود التالي نضع NavigateUrl الخاص بكل HyperLink و الذي سيحوي H_Number الذي سيسند له قيمة رقم HyperLink

ثم نقوم بإضافة كل HyperLink إلى خلية في سطر في جدول asp موضوع سابقا في الصفحة حسب المكان المختار

المقطع هنا شرح للكود التالي :

            H.NavigateUrl = @"~/Default.aspx/?H_Number=" + Acc_Show_Number.ToString();
            MyCell.Controls.Add(H);
            MyRow.Controls.Add(MyCell);
            Table1.Controls.Add(MyRow);

و السلام عليكم

مواضيع مشابهة