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

ربط صفحة بصفحة عن طريق session

بدأه جابر الشمري في 5 سبتمبر 2010 · 18 رد · 1,943 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني عندي صفحة لعرض الرسايل الواردة

فيها columnلعرض التفاصيل الرسالة عبارة عن لينك

لما بضفط عليه بدو يرسلني لصفحة تعرض الرسالة كاملة

صفحة عرض الرسالة فيها فورم فيو بدي جيب معلوماته من

الصفحة السابقة عن طريق seesion

ممكن احد يفيدني بهالموضوع كيف اعمل session

يجيب لي المعلومات من صفحة سابقة

اللي يبي مشروع تخرج asp.net

يرسل لي رسالة خاصة

#2

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

اخي الكريم ماهي الاداءة المستخدمة لعرض الرسائل هل هي Gridview ???

اذا كانت الاجابة نعم فهذه طريقة بسيطة وان شاء الله تستفيد منها

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

ملاحظة : انا استخدم SqlDataSource كـ اداة لعرض البيانات

الطريقة بسيطة اخي مجرد انك تأخد مثلا الـ ID الخاص بــ الرسالة وتضعة في Session .

طبعا انا في مثالي وضعت هذه الادوات : في الصفحة الاولى وهي الصفحة الي نعرض فيها الرسائل ( على حسب طلبك ) وضعت GridView وعملت

<asp:ButtonField Text="More..." CommandName="Show_More" />

كأضافة الى اعمدة الـ Grid view

هذه هو الزر او اللنك الي بيتم الضغط عليه للأنتقال للصفحة الثانيه ( لعرض البيانات )

وهذا الكود لأخد الـ ID الخاص بالرسالة

اول خطوة ننفذ هذا الكود في حدث RowCommand

وراح بيكون الناتج النهائي للكود :

        if (e.CommandName == "Show_More")
        {
            int index = Convert.ToInt32(e.CommandArgument);
            Session["newsId"] = GridView1.DataKeys[index].Value.ToString();
            Response.Redirect("~/Session/SecondPage.aspx");
        }

مع الانتباه ان

 Response.Redirect("~/Session/SecondPage.aspx");

هو المسار للصفحة الثانيه ( المقصد هذا الجزئ يتغير على حسب ملفاتك )

في الصفحة الثانيه وهي عند استقبال البيانات

في الـ SqlDataSource الي بنرجع منها البيانات نحدد اي البيانات الي نرديها ترجع بشرط ان يكون مثلا ID الخاص بالرسالة يساوي session وطبعا في هذه الحالة انا عرفتة في الكود السابق بأسم

Session["newsId"]

وخلاص هذا شكل SqlDataSource بالكود

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MytestConnectionString1 %>" 
            SelectCommand="SELECT [newsID], [newstitle], [newsSubject], [newsDate], [UserRate], [UserName] FROM [News] WHERE ([newsID] = @newsID)">
            <SelectParameters>
                <asp:SessionParameter Name="newsID" SessionField="newsId" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

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

وان شاء الله تتم الاستفادة من هذا الكود .

وشكرا

and good luck

تم تعديل هذه المشاركة بواسطة D a r K T o u c h في 6 سبتمبر 2010 في 04:32

1

My Latest

Hello Entity Framework Code First

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

#3

اخوي نعم الاداة الكستخدمة بعرض الرسائل gridview

لكن الشي الذي لم افهمه حدث الrowcommand

ماعرفت كيف استخرجه

وشكرا الك

اللي يبي مشروع تخرج asp.net

يرسل لي رسالة خاصة

#4

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

اخي الكريم RowCommand هو احد احداث ( Event ) الخاصين بالـ GridView

واليك طريقة اختيارة

في البداية نحدد الـ GridView

ونذهب الى الخصائص ( properties ) ولاحظ الصورة :

post-224629-067799900 1283762084_thumb.j

دبل كليك على الحدث وراح يفتح لك صفحة الكود وراح يكون الحدث موجود بهذا الشكل

ملاحظة : اذا كنت تستخدم #C

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {

    }

وهذا هو المطلوب

شكرا

المرفقات
Event.JPG

My Latest

Hello Entity Framework Code First

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

#5

اخوي الله يرضاعليك الكود تبع الصفحة الثانية وين اكتبه

مع ان الاداة اللي انا مستخدمها بالعرض هي عبارة عن formview

هذا بالصفحة الثانية

وشكرا لك

اللي يبي مشروع تخرج asp.net

يرسل لي رسالة خاصة

#6
اقتباس
اخوي الله يرضاعليك الكود تبع الصفحة الثانية وين اكتبه

مع ان الاداة اللي انا مستخدمها بالعرض هي عبارة عن formview

هذا بالصفحة الثانية

وشكرا لك

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

اخي الكريم ليست مهمة الاداة الاهم هي DataSource الي بترجع فيها المعلومات

فلو تلاحظ هذا الكود

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MytestConnectionString1 %>" 
            SelectCommand="SELECT [newsID], [newstitle], [newsSubject], [newsDate], [UserRate], [UserName] FROM [News] WHERE ([newsID] = @newsID)">
            <SelectParameters>
                <asp:SessionParameter Name="newsID" SessionField="newsId" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

في SelectParameters جعلتة يرجع المعلومات على حسب الـ ID الموجود في الـ session

<asp:SessionParameter Name="newsID" SessionField="newsId" Type="Int32" />

ان شاء الله وصلت الفكرة

تم تعديل هذه المشاركة بواسطة D a r K T o u c h في 7 سبتمبر 2010 في 01:16

My Latest

Hello Entity Framework Code First

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

#7
D a r K T o u c h كتب:

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

اخي الكريم ماهي الاداءة المستخدمة لعرض الرسائل هل هي Gridview ???

اذا كانت الاجابة نعم فهذه طريقة بسيطة وان شاء الله تستفيد منها

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

ملاحظة : انا استخدم SqlDataSource كـ اداة لعرض البيانات

الطريقة بسيطة اخي مجرد انك تأخد مثلا الـ ID الخاص بــ الرسالة وتضعة في Session .

طبعا انا في مثالي وضعت هذه الادوات : في الصفحة الاولى وهي الصفحة الي نعرض فيها الرسائل ( على حسب طلبك ) وضعت GridView وعملت

<asp:ButtonField Text="More..." CommandName="Show_More" />

كأضافة الى اعمدة الـ Grid view

هذه هو الزر او اللنك الي بيتم الضغط عليه للأنتقال للصفحة الثانيه ( لعرض البيانات )

وهذا الكود لأخد الـ ID الخاص بالرسالة

اول خطوة ننفذ هذا الكود في حدث RowCommand

وراح بيكون الناتج النهائي للكود :

        if (e.CommandName == "Show_More")
        {
            int index = Convert.ToInt32(e.CommandArgument);
            Session["newsId"] = GridView1.DataKeys[index].Value.ToString();
            Response.Redirect("~/Session/SecondPage.aspx");
        }

مع الانتباه ان

 Response.Redirect("~/Session/SecondPage.aspx");

هو المسار للصفحة الثانيه ( المقصد هذا الجزئ يتغير على حسب ملفاتك )

في الصفحة الثانيه وهي عند استقبال البيانات

في الـ SqlDataSource الي بنرجع منها البيانات نحدد اي البيانات الي نرديها ترجع بشرط ان يكون مثلا ID الخاص بالرسالة يساوي session وطبعا في هذه الحالة انا عرفتة في الكود السابق بأسم

Session["newsId"]

وخلاص هذا شكل SqlDataSource بالكود

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MytestConnectionString1 %>" 
            SelectCommand="SELECT [newsID], [newstitle], [newsSubject], [newsDate], [UserRate], [UserName] FROM [News] WHERE ([newsID] = @newsID)">
            <SelectParameters>
                <asp:SessionParameter Name="newsID" SessionField="newsId" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>

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

وان شاء الله تتم الاستفادة من هذا الكود .

وشكرا

and good luck

السلام عليكم ...أخي طبقت هذا الكود لكن تظهرلي رسالة خطأ Property or indexer 'System.Web.UI.WebControls.CommandEventArgs.CommandName' cannot be assigned to -- it is read only....ويحدد الخطأ على جملة

( "if (e.CommandName = "showmore ..طبقتها أكثر من مرة ويظهر نفس الخطأ....أرجو مساعدتي في معرفة الخطأ....

#8

هنالك طريقة أسهل من السيشن جربها ..............

حسنا لنمرر الـ ID عن طريق ال quiryString

ضع الغريد فيو ومن القائمة المنسدلة في الأعلى قم باختيار add new column ....... واختر من النافذة التي ستظهر لك نوع العمود هو HeyperLinkFeild ............ الآن لنمشي خطوة خطوة في هذه النافذه ....

header text سوف يظهر فيه اسم العمود في الأعلى ....

heyperlink text وهو النص الذي سيظهر كارتباط تشعبي وهو في حالتين إما أن يكون specify وعندها النص يكرر في كل السطور أو ان يكون from data field وعندها سيظهر لك كل الاعمدة التي انت قد جلبتها من قاعدة البيانات اختر عمود لعرض بياناته في السطر .................

HyperLink URL وهنا إما أن يكون url ثابت قم انت بكتابته ........ أو أن يكون حسب from data feild وهو ما انت تريده ....

الآن اختر العمود الذي تريد تمرير قيمته هو ID واكتب العنوان الذي تريد الانتقال إليه عند النقر على الرابط وتأكد أنه بالشكل التالي :

page.aspx?id=0

القيمة 0 تعني الحقل الذي اخترته من قاعدة البيانات هو ID ..........

في الصفحة التي قمت بالانتقال الها ضع في الداتا سورس شرط جلبالـ ID من الـ quiryString

1

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#9
Tammam_KD كتب:

هنالك طريقة أسهل من السيشن جربها ..............

حسنا لنمرر الـ ID عن طريق ال quiryString

ضع الغريد فيو ومن القائمة المنسدلة في الأعلى قم باختيار add new column ....... واختر من النافذة التي ستظهر لك نوع العمود هو HeyperLinkFeild ............ الآن لنمشي خطوة خطوة في هذه النافذه ....

header text سوف يظهر فيه اسم العمود في الأعلى ....

heyperlink text وهو النص الذي سيظهر كارتباط تشعبي وهو في حالتين إما أن يكون specify وعندها النص يكرر في كل السطور أو ان يكون from data field وعندها سيظهر لك كل الاعمدة التي انت قد جلبتها من قاعدة البيانات اختر عمود لعرض بياناته في السطر .................

HyperLink URL وهنا إما أن يكون url ثابت قم انت بكتابته ........ أو أن يكون حسب from data feild وهو ما انت تريده ....

الآن اختر العمود الذي تريد تمرير قيمته هو ID واكتب العنوان الذي تريد الانتقال إليه عند النقر على الرابط وتأكد أنه بالشكل التالي :

page.aspx?id=0

القيمة 0 تعني الحقل الذي اخترته من قاعدة البيانات هو ID ..........

في الصفحة التي قمت بالانتقال الها ضع في الداتا سورس شرط جلبالـ ID من الـ quiryString

#10
-الأمل- كتب:

أشكرك جزيل الشكر.....ضبط الحمدلله ......الله يجزاك خير الجزاء ويرزقك من حيث لاتحتسب

طيب سؤال...إذا أردت أن يكون رقم الرسالة متغير وليس ثابت....جربت يضبط إذا تم تثبيت رقم الرسالة ..كيف أخليه يفتح على حسب رقم الرسالة؟؟

#11

هذه الطريقة ليست برقم ثابت وإنما هي بأرقام متغيرة ........ حسب ما هو مخزن في قاعدة البيانات فمثلا ... لو كان لدي الاستعلام التالي ضمن الداتا سورس

select UserID,Username from Users

وقمت بملء الغريد فيو بهذه البيانات وقمت باتبعاع الطريق السابقة التي قمت بشرحها ...... ستجد أنك لو نقرت فوق الرابط ستتغير القيمة المررة في الكويري سترينغ تلقائيا

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#12

page.aspx?id=0

لما احط id=0 مايطلع شي في الصفحة اللي بعدها

بس لما احط id=1 أو id=2

يفتح الصفحة الثانية وفيها الرسالة التي id لها =1 أو 2....لا أعرف ماالمشكلة؟؟

أشكرك أخ تمام ...وأعتذر عن الإزعاج

#13
-الأمل- كتب:

page.aspx?id=0

لما احط id=0 مايطلع شي في الصفحة اللي بعدها

بس لما احط id=1 أو id=2

يفتح الصفحة الثانية وفيها الرسالة التي id لها =1 أو 2....لا أعرف ماالمشكلة؟؟

أشكرك أخ تمام ...وأعتذر عن الإزعاج

منطقيا هذا الكلام غير صحيح فلو ظهرت قيمة ما شتظهر باقي القيم   ولكن لا استطيع الجزمنهائيا لأني لا اعرف ماذا كتبتي في الكود

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#14

هذا كود الجرد فيو

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

DataKeyNames="Message_Id" DataSourceID="SqlDataSource1">

<Columns>

<asp:BoundField DataField="Sender" HeaderText="Sender"

SortExpression="Sender" />

<asp:BoundField DataField="Receiver" HeaderText="Receiver"

SortExpression="Receiver" />

<asp:BoundField DataField="Date_Sent" HeaderText="Date_Sent"

SortExpression="Date_Sent" />

<asp:BoundField DataField="Title_message" HeaderText="Title_message"

SortExpression="Title_message" />

<asp:BoundField DataField="Message_Id" HeaderText="Message_Id"

InsertVisible="False" ReadOnly="True" SortExpression="Message_Id" />

<asp:HyperLinkField HeaderText="show" NavigateUrl="SecondPage.aspx?Id=2" هذة الهايبر لنك اخترت أن يذهب للصفحة التالية وارسلت id...وهنا المشكلة التي أجدها لما أرسلid=0 يفتح الصفحة بس مايعرض شي من الفورم فيو ولما أرسل 2أو 1...تطلع الرسالة التي رقمها 1أو 2....ويكون رقم الرسالة اللي ابغاه ينفتح رقم ثاني...

Text="more" />

</Columns>

</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>"

هنا الحقول التي أريد عرضها في الجريد من جدول الرسائل...بشرط أن المستقبل=textbox1...وهو العضو الذي سجل دخوله

SelectCommand="SELECT [sender], [Receiver], [Date_Sent], [Title_message], [Message_Id] FROM [Message] WHERE ([Receiver] = @Receiver)">

<SelectParameters>

<asp:QueryStringParameter Name="Receiver" QueryStringField="Member_Name"

Type="String" />

</SelectParameters>

</asp:SqlDataSource>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>

في الفورم فيو في الصفحة التالية أريد عرض نص الرسالة بشرط أن رقم الرسالة يكافئ...الكويري سترينغ id

<body>

<form id="form1" runat="server">

<div>

<br />

<br />

<br />

<br />

<br />

<p>

 </p>

<p>

<asp:FormView ID="FormView1" runat="server"

DataSourceID="SqlDataSource1">

<EditItemTemplate>

Message_Text:

<asp:TextBox ID="Message_TextTextBox" runat="server"

Text='<%# Bind("Message_Text") %>' />

<br />

<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True"

CommandName="Update" Text="Update" />

 <asp:LinkButton ID="UpdateCancelButton" runat="server"

CausesValidation="False" CommandName="Cancel" Text="Cancel" />

</EditItemTemplate>

<InsertItemTemplate>

Message_Text:

<asp:TextBox ID="Message_TextTextBox" runat="server"

Text='<%# Bind("Message_Text") %>' />

<br />

<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True"

CommandName="Insert" Text="Insert" />

 <asp:LinkButton ID="InsertCancelButton" runat="server"

CausesValidation="False" CommandName="Cancel" Text="Cancel" />

</InsertItemTemplate>

<ItemTemplate>

Message_Text:

<asp:Label ID="Message_TextLabel" runat="server"

Text='<%# Bind("Message_Text") %>' />

<br />

</ItemTemplate>

</asp:FormView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>"

OldValuesParameterFormatString="original_{0}"

SelectCommand="SELECT [Message_Text] FROM [Message] WHERE ([Message_Id] = @Message_Id)">

<SelectParameters>

<asp:QueryStringParameter Name="Message_Id" QueryStringField="Message_id"

Type="Int32" />

</SelectParameters>

</asp:SqlDataSource>

</p>

</div>

</form>

<p>

 </p>

</body>

وشكراً لك

#15

حسنا أختي هل في قاعدة البيانات المعرف ذو القيمة 0 ؟؟؟؟؟؟؟

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#16

أخي الكريم : أخبرتني أن القيمة 0 تعني الحقل الذي اخترته من قاعدة البيانات هو ID

الذي فهمته أنه يعني "ترتيب حقل رقم الرسالة في جدولي" ...وهي أول حقل يعني 0...هل مافهمته صحيح؟؟؟وأعتذر عن الإزعاج

#17

أختي لا يوجد ازعاج أبدا ......... ولكن انتبهي ..... القراء من الكويري سترينغ هي مجرد نقل قيمة لمتحول ...... 

تقرأين هذا المتحول وتستخدميه في الكود

مثلا ليكن لديك الاستعلام التالي :

select UserName from Users where UserID=QuirySting

القيمة المررة لشرط where في هي مأخوذة من الكويري سترينغ ........ هذا ما قصدته

ارجو ان تكون وصلت الفكرة

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#18

وصلت الفكرة....لكن عجزت أن أعرف المشكلة في تطبيقي...وأخذ وقت طويل ...

سأريه للمشرفة وانظر ماالمشكلة..الله يجزاك خير أخي الكريم

#19

كانت المشكلة إني مررت رقم الرسالة في url

المشرفة عدلتها في dataformatstring والحمدلله ضبط

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