كيف يمكنني العثور على عنصر تحكم في قالب التذييل الخاص بمكرر البيانات

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

سؤال

أس بي إكس :شفرة

<asp:repeater id="repeater" runat="server">

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>

</asp:repeater>

ما أبحث عنه هو الكود المصدري حتى أتمكن من العثور على عنصر التحكم داخل تذييل مكرر البيانات.أنا على دراية بـ "FindControl" الأساسي عندما أقوم بربط بيانات أو أبحث عن عنصر تحكم داخل الصفحة نفسها، ولكن كيف يمكنني العثور على عنصر التحكم داخل قالب تذييل لمكرر البيانات؟

هل هذا ممكن حتى؟وإذا كان الأمر كذلك كيف يمكنني الحصول على بعض المساعدة،

شكرا مرة أخرى للجميع!!!

[تحديث]

أحتاج أن أكون قادرًا على القيام بذلك بعد ربط البيانات

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

المحلول

Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    If e.Item.ItemType = ListItemType.Footer Then
        Dim Lit As Literal = CType(e.Item.FindControl("findme"), Literal)
    End If
End Sub

نصائح أخرى

هناك عدد من الطرق التي يمكنك من خلالها القيام بذلك، وتعتمد الطريقة الدقيقة على الوقت الذي تريد فيه الوصول إلى عنصر التحكم.

إذا كنت تريد ذلك أثناء DataBind، فما عليك سوى القيام بما يلي داخل العنصر Databound.

if(e.Item.ItemType == ItemType.Footer)
{
    Literal findMe = (Literal)e.Item.FindControl("findMe");
    //Your code here
}

إذا كنت تريد العثور عليه في وقت آخر، فادخل إلى مجموعة عناصر المكرر، ثم ابحث عن عنصر "التذييل"، ومن هذا العنصر، يمكنك العثور على عنصر التحكم.

تحديث

بناءً على ملاحظتك المضافة، يمكنك القيام بذلك عن طريق تعداد مجموعة العناصر، فيما يلي مثال لمكرر يحتوي على معرف myRepeater.

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}

وأعتقد أن لديك للتحقق من ListItemType في معالج الحدث ItemDataBound. يمكنك التحقق من رأس أو تذييل الصفحة ثم استخدام الأسلوب FindControl للوصول إلى السيطرة.

Foreach (RepeaterItem item in myRepeater.Controls)

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

إذا كنت بحاجة للحصول على تذييل <م> بعد DataBind عناصر (وهو ما يظهر OP تريد) ثم يمكنك استخدام ما يلي:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top