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

سؤال عن GridView

بدأه sameh_net في 30 نوفمبر 2009 · 5 رد · 1,893 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أهلا بكم جميعا فى هذا المنتدى الرائع.............

عايزين نعرف كيف نجعل الأعمدة فى

gridview

مثلا عمود يكون عبارة عن لينك أخر يكون صورة

ولكن كل هذا عن طريق الكود فى صفحة الكود لأنى فى هذه الحالة كنت مستخدم خاصية

datasource

وذلك كالأتى

gridView1.DataSource = query;

حيث أن

query

متغير عن طريق استخدام linq

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

وطبعا مبقدرش اتحكم فى الأعمدة علشان اعمل مثلا link على صفحة أو موقع وهكذا

لذلك أنا أسألكم تشوفوا هذه المشكلة

جزاكم الله خيرا

#2

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

اختي انا صراحه عندي نفس مشكلتك

وبعد البحث وجدت انه

المفروض لما تضيفي عمود يحتوي على لينك تغيري في الخصائص وتسندي

ال commandArgument الى primarykey

وعن طريق ال e.commandName

تحطي الاكشن

مثل هذا الكود

<asp:TemplateField><ItemTemplate><asp:LinkButton 
ID="Lb_View" runat="server" CommandName="ViewDetail" CommandArgument='<%# 
Eval("PrimaryKey") %>'>View User 
Detail</asp:LinkButton></ItemTemplate></asp:TemplateField> 

And in ur code behind 
Private Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As 
GridViewCommandEventArgs) Handles GridView1.RowCommand 

If e.CommandName = "ViewDetail" ThenDim Use_ID As Integer = 
Convert.ToInt32(e.CommandArgument)Response.Redirect("/Profile.aspx?UserID=" 
& User_ID )End If 
End Sub

لكن انا عندي ما القى بالخصائص

الـ command argumant

لذالك لم يفلح معي هذا الكود

وبحثت كثير ومالقيت حل

لذالك بستخدم ال list view هي تعرض مثل ال gride view

وان شاء الله يضبط معي اذا ضبط معي بقولك

واذا ضبط معك قوليلي

واذا احد عنده حل ياليت يخبرنا

تم تعديل هذه المشاركة بواسطة yara.008 في 4 ديسمبر 2009 في 21:44

#3

الحل هو اضافة TemplateField

من خلال خصائص ال Gridview

Edit Columns > add Templatefield

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

هنا المشكله كيف حين يضغط المستخدم علي اللينك كيف يتعرف البرنامج علي السطر بمعني ما الفرق بين اللينكات في كل سطر

يظهر ذلك في الكود التالي

Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    	Dim ID As String
    	Dim b As LinkButton = CType(sender, LinkButton)
    	Dim row As GridViewRow = b.Parent.Parent
    	ID = row.Cells(0).Text
    	Response.Redirect("Page.aspx?ID=" & ID & "")


	End Sub

عند الضغط علي اللينك فان قيمة ID تتغير حسب قيمة معينه في عمود اخر وليكن في هذا المثال اول عمود بالجريد وبالتالي صفحة انتقال اللينك ستكون بمعامل مختلف كل مره

اتمني اني اكون قدرت اوصل المعلومه صح وبشكل مفيد

تم تعديل هذه المشاركة بواسطة Crystal Report في 5 ديسمبر 2009 في 00:34

#4

السلام عليكم ورحمة الله وبركاته أخى crystalReport شكرا على الرد ولكن كيف يمكن استخدام هذا ID فى الصفحة page.aspx عن طريق control موجود فى هذه الصفحة ولك ولهذا المنتدى الجميل جزيل الشكر

#5

الأخوان الأعزاء / Sameh abd Elmonim و sameh_net

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

بالنسبة لإستخدام الرابط في الـ GridView فهو سهل جدا، الرابط بشكل عام قد يكون الغرض منه هو إعادة توجيه المستخدم لصفحة أخرى أو إلى نفس الصفحة، في حالة كان التوجيه إلى صفحة أخرى وكان المطلوب هو الحصول على الـ ID الموجود في نفس السطر في الـ GridView فينبغى عليك إستخدام ما يسمى بالـ QueryString والتي هي عبارة عن معلومات تلصق في آخر العنون (URL) بالشكل التالي:

http://www.mywebsite.com/mypage.aspx?id=10221

نلاحظ من المثال أعلاه أن المتغير الذي تم إلصاقة في آخر العنوان هو id وقيمته هي 10221. وفي حالة وجود أكثر من متغير قم بإستخدام الـ & وذلك كما في المثال التالي :

http://www.website.com/mypage.aspx?id=10221&age=27

نلاحظ في المثال أعلاه أن هناك متغيرين إثنين وهما id و age وقيمة كل منهما هي 10221 و 27 على التوالي.

كل ما يتحتم علينا فعله هو تأويل ما ذكر أعلاه لصالحنا، بمعنى آخر أنه في الـ GridView تقوم بإدخال ItemTemplate في داخله رابط يدل على صفحة معينه ملصوقا بالمعلومات المطلوبه، دعنا نفرض أن هناك حقل في الـ DataSource للـ GridView باسم id وهو الذي نريده، يكون الكود كالتالي

<asp:TemplateField HeaderText="Link to Page">
                    <ItemTemplate>
                        <a href='mypage.aspx?id=<%# Eval("id") %>'>Goto</a>
                    </ItemTemplate>
                </asp:TemplateField>

أما بالنسبة إذا كان الرابط فقط ليعطي منظر جمالي للـ GridView والتوجيه يكون على نفس الصفحة فيجب عليك أن تقوم بإدخال asp:LinkButton حيث أنه يحتوي على CommandName و CommandArgument من خلالهما يمكنك تحديد ما يجب عمله في داخل الحدث OnRowCommand بالنسبة للـ GridView، بمعنى آخر الـ CommandName هو الذي يميز أو يعطي وصف لطبيعة عمل الرابط أو الـ asp:LinkButton و CommandArgument هي عبارة عن قيمة يمكن الإستفاده منها. وهذا ينطبق أيضا على كل من asp:Button و asp:ImageButton. ولكي تتضح الفكرة ستجد في المرفقات Solution يحوي على صفحتين، الأولى بها GridView في داخلها رابطين يوضحان الحالتين التي سبق ذكرها وصفحة تعرض ما تم إرسالة من خلال الرابط كما هو الحال في الفقرة الأولى من هذا الرد.

أتمنى لكم التوفيق ودوام الصحة والعافية

ولو كان هناك إستفسار أو خطأ أرجوا عدم التردد في الرد، فعلى كل حال كلامي غير منزل ولكن مجرد كلام إنسان بسيط

في أمان الله

LinkInGridView.zip

#6

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

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