تحديث العنصر النائب أثناء وقت التشغيل
-
19-09-2019 - |
سؤال
هذه هي المشكلة التي أواجهها مع عنصر نائب:
لدي مكرر وفي هذا المكرر، لدي قالب عنصر. الآن يتم تنسيق هذا القالب بضع طاولات، ولكن لهذا السؤال الذي أزالته لهم لجعل الأمور أسهل في قراءة:
<asp:Repeater ID="Repeater1" OnItemDataBound="R1_ItemDataBound" runat="server">
<ItemTemplate>
<asp:PlaceHolder ID="phAnswers" runat="server"></asp:PlaceHolder>
</ItemTemplate>
</asp:Repeater>
ثم، في الحدث ONITEMDATAMOUSD، أقوم بإنشاء عنصر نائب جديد، وربطه بالمحدث (phanswers)، ولكن لا يتم تحديث العنصر النائب مع Radiobuttons / TextBoxs التي يتم إنشاؤها:
Dim rdList As New RadioButtonList
Dim newRadio As New RadioButton
If (e.Item.ItemType = ListItemType.Item) Or _
(e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim tempPH As PlaceHolder
tempPH = e.Item.FindControl("phAnswers")
For x As Integer = 0 To (t_MC.Count - 1)
newRadio = New RadioButton
newRadio.ID = "Answer" + x.ToString
newRadio.Text = t_MC(x).Value
rdList.Controls.Add(newRadio)
Next
tempPH.Controls.Add(rdList)
أي أفكار لماذا لا يتم تحديث phanswers مع عنصر النائب tempph الجديد؟ هتافات
المحلول
قد يكون OnItemDATABOUND فوات الأوان لإضافة عناصر تحكم. جربه في OnItemCreated ومعرفة ما إذا كان ذلك يساعد. إنه اختبار سريع - ما عليك سوى تغيير إعلان أحداث مكرر مثل هذا:
OnItemCreated="R1_ItemDataBound"
إذا كانت هذه الفكرة لا تساعد، فيمكنك بسهولة إيقاف تشغيله.
تحرير - لقد لاحظت شيئا. لتعبئة Radiobuttonlist، يجب عليك استخدام Listitems، مثل هذا:
ListItem item - new ListItem("your text", "your value");
rdList.Items.Add(item);
ربما هذا هو السبب في سبب ظهور Radiobuttonlist الخاص بك، ولكن أزرار راديو وحيدة تعمل.
نصائح أخرى
حاول استخدام أ Panel
بدل من PlaceHolder