كيفية الوصول إلى عناصر التحكم في قالب تخطيط عرض القائمة؟

StackOverflow https://stackoverflow.com/questions/48616

  •  09-06-2019
  •  | 
  •  

سؤال

كيف أقوم بتعيين خاصية عنصر تحكم المستخدم في ListViewLayoutTemplate من وراء الكود؟

<asp:ListView ...>
<LayoutTemplate>
<myprefix:MyControl id="myControl" ... />
</LayoutTemplate>
...
</asp:ListView>

اريد فعل هذا:

myControl.SomeProperty = somevalue;

يرجى ملاحظة أن سيطرتي ليست في ItemTemplate, ، انها بالداخل LayoutTemplate, ، لذلك فهو غير موجود لجميع العناصر، فهو موجود مرة واحدة فقط.لذلك يجب أن أكون قادرًا على الوصول إليه مرة واحدة، وليس لكل عنصر مرتبط بالبيانات.

هل كانت مفيدة؟

المحلول

لتعيين خاصية عنصر تحكم موجود داخل LayoutTemplate، ما عليك سوى استخدام أسلوب FindControl في عنصر تحكم ListView.

var control = (MyControl)myListView.FindControl("myControlId");

نصائح أخرى

var control = (MyControl)myListView.FindControl("myControlId");

سيعمل هذا ولكن تأكد من القيام بذلك بعد ربط البيانات وإلا فلن يتم إنشاء LayoutTemplate وبالتالي حدوث خطأ.

استخدم ال FindControl الطريقة على كل ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId");

تمت الإجابة على هذا في سؤال Stack Overflow:
قم بالوصول إلى عنصر تحكم داخل LayoutTemplate الخاص بـ ListView

انظر التعليق على الإجابة المقبولة بواسطة tanathos.

أعلم أن هذا السؤال قد تم طرحه منذ أكثر من عام، ولكنه أحد النتائج الأولى لمصطلح البحث الذي اعتدت أن أحصل عليه هنا، لذلك أردت أن أترك الإجابة لأي شخص آخر عثر عليه.

يتم إنشاء التخطيط، ويتم إطلاق حدث LayoutCreated الذي يفيد بأنه تم إنشاء التخطيط في النظام.

بعد ذلك، يمكنك استخدام listview.FindControl للحصول على مرجع لعنصر التحكم هذا.

في حال كنت بحاجة إلى إصدار VB.net، فإليك:

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top