![]() |
|
استفسار عن الـ CommandArguments + DataKeys - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم برمجة وتطوير المواقع (http://vb4arb.com/vb/forumdisplay.php?fid=51) +--- قسم : قسم ASP.NET (http://vb4arb.com/vb/forumdisplay.php?fid=52) +---- قسم : قسم اسئلة ASP.NET (http://vb4arb.com/vb/forumdisplay.php?fid=53) +---- الموضوع : استفسار عن الـ CommandArguments + DataKeys (/showthread.php?tid=5136) |
استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 05-10-12 السلام عليكم من خلال تعرضي للـ GridView كان هناك مثال بالمنتدى القديم حول نقل قيمة من صفحة لأخرى , وكان المثال فيه CommandArguments + DataKeys+DataKeyNames اتمنى لو احصل على فكرة نظرية ولو بسيطة عن هذه المصطلحات الثلاث (شو معناتهم , ومتى استخدمهم) لم استطع فهم هذه المصطلحات من المراجع الانكليزية , أو الاحرى لم اجد مرجع يشرحها من البداية , استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 05-10-12 أضف اليها حدث الـ RowCommand ـ هو سبب مشكلتي مع هذه المصطلحات Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
Dim itm As Integer itm = Convert.ToInt32(e.CommandArgument) Response.Redirect("Default2.aspx?ID=" & GridView1.DataKeys(itm).Value.ToString()) End Sub استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 06-10-12 سأكتب هنا ماتم التوصل اليه مع مثال GridView والحدث RowCommand يحدث الحدث RowCommand عندما ننقر على زر ButtonField داخل الجريدفيو (أي ينفذ مانريد تنفيذه عند النقر على الزر ) الزر داخل الجريد فيو يمكن ان ينجز بعض المهام ولهذا الزر خاصيتان مهمتان هما : CommandName CommandArgument قيمتها الافتراضية : رقم (index) للسطر الحالي . وحتى نستطيع استخدام هاتين الخاصتين يجب ان نمرر الكائن (e) المأخوذ من الكلاس (GridViewCommandEventArgs) كوسيط الى معالج الحدث RowCommand "حيث هذه الكلاس تزود الحدث السابق بالمعطيات فهي تحدد مصدر الامر ووسائط الحدث وتحدد رقم السطر" الزر داخل الجريدفيو له استخدامات عدة , وعادة مايتم استخدامه من أجل المهام التالية (على ان يوضع اسم المهمة ضمن الـخاصية CommandName ) والمهام هي: Edit : تضع السجل الحالي بوضع التحرير وتطلق الحدث RowEditing Cancel : تلغي عملية التحرير السابقة وتعيد الجريد فيو لوضع القراءة Delete : تحذف السجل الحالي وتطلق الحدث RowDeleting , RowDeleted Page : جعل الجريد فيو تعرض بصفحات Paging وهنا نضع في الخاصية CommandArgument "التالي" و " السابق" وهكذا .. أو بشكل أرقام تشير لرقم الصفحة , وهنا يتم اطلاق حدث PageIndexChenging [ATTACH=CONFIG]744[/ATTACH] Sort : ترتيب اسطر الجريدفيو , وتطلق الحدثين Sorting , Sorted وهنا يمكن ان نستخدم الخاصية CommandArgument لتحديد اتجاه الترتيب تنازلي أو تصاعدي حيث نعطيها يدويا احدى القيمتين Ascending أو Descending Update : تحديث السجل الحالي في قاعدة البيانات (وليس فقط بالجريدفيو) وهنا ينطلق الحدثين RowUpdating , RowUpdated . لتحديد رقم السطر الذي أطلق الحدث RowCommand نستخدم الخاصية CommandArgument التابعة للكائن e المشتق من (GridViewCommandEventArgs) الذي قمنا بوضعه مسبقا كوسيط للحدث . حيث تحوي هذه الخاصية رقم السطر مثال كود : [align=left]void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)(عند النقر على الزر Add داخل الجريدفيو يقوم باضافة السطر الحالي الى الـ ListBox ) لنقوم الان بانشاء جريدفيو و ListBox بصفحة التصميم نذهب لصفحة الـ Html ونضيف للجريد فيو ButtonField ونسميه Add أو اضافة ونضيف لهذا الزر الخاصية CommandName="Add" بالشكل التالي كود : <asp:ButtonField CommandName="Add" Text="Add" />ليصبح كود الجريدفيو كامل كالتالي : كود : [COLOR="#0000FF"][align=left][ATTACH=CONFIG]743[/ATTACH] نحدد الجريدفيو ونذهب الى خصائصها في الـ Properties نحدد Events بدلا من الخصائص ونضغط دبل كليك على الحدث RowCommand لنجعل هذا الحدث ينفذ المهمة المطلوبة من النقر على الزر Add والتي هي هنا اضافة السطر الحالي الى ListBox اذاً نكتب به الكود التالي : كود : [SIZE=6][COLOR="#0000FF"][/SIZE] استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 06-10-12 المثال هنا [COLOR="#0000FF"] [ATTACH]742[/ATTACH] [/COLOR] استفسار عن الـ CommandArguments + DataKeys - سعود - 06-10-12 اعذرني اخي لم اقرا كامل الموضوع لكن شدتني جزئية نقل قيمة .. ارجو ان مرادك متوفر بالرابط التالي: http://vb4arb.com/vb/showthread.php?96-%D4%D1%CD-%DA%D1%D6-%C7%E1%E3%DA%E1%E6%E3%C7%CA-%E3%E4-%CC%CF%E6%E1-%C8%C7%C8%D3%D8-%C7%E1%D8%D1%DE استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 06-10-12 أشكرك أخي سعود وموضوع مفيد جدا (عرض العناوين والتفاصيل ) وسأدرسه بالتفصيل ان شاء الله فالافكار مرتني من قبل, بارك الله فيك أما موضوع نقل قيمة بالكويري سترنج فأنا لا أسأل عنه ولكن كان سؤالي حول المصطلحات التي كتبتها هل لها علاقة بنقل القيم بين الصفحات .. ولكن تبين انه ليس لها علاقة , مجرد توهم فقط . ثم بالتعليقات الاخرى كتبت كيفية استعمال بعض هذه المصطلحات . بقي الان الـ DataKeys أو الـ DataKeyNames شو شغلتهم ؟؟ استفسار عن الـ CommandArguments + DataKeys - AbaAlHaitham - 08-10-12 DataKey تمثل قيمة المفتاح الرئيسي PrimaryKey لمصدر البيانات يمكن الحصول عليه بالطريقة Datakey k1=GridView1.DataKeys[0]; ان خاصية الـ DataKeyNames تحمل اسم حقل المقتاح الرئيسي مثلا : IdCustomer فمثلا لدينا صفحتين الاولى بها GridView تعرض عناوين الاخبار والثانية بها DetailsView تعرض التفاصيل لو اردنا الحصول على قيمة المفتاح الرئيسي عند عرض التفاصيل بالـ DetailsView أولا يجب ان تكون الخاصية DataKeyNames في الجريدفيو (بالصفحة الاولى ) تحمل اسم الحقل الرئيسي بجدول البيانات وفي DetailsView نستخدم الحدث DataBound كالتالي كود : [align=left]حيث حدث DataBound يحدث عند جلب البيانات من المصدر (قاعدة البيانات) |