سؤال

تتكون كل عينة قد وجدت من القيام بذلك من كتابة وظيفة خارج Onload من صفحتي من أجل القيام بذلك، لكنني فضولي إذا كانت هناك طريقة أكثر إيجازا للذهاب حولها. لدي تسمية داخل الصدارة، وأريد فقط تعيين نص الملصق إلى سلسلة. يمكنني القيام بما يلي إذا كانت الملصق خارج المكرر:

Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));

هل هناك طريقة موجزة للقيام بذلك؟

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

المحلول

حاول القيام بما يلي في داخل قالب رأسك:

<asp:Label ID="Month" runat="server" Text='<%# (Month)Convert.ToInt16(MonthList.SelectedValue) %>' />

نصائح أخرى

سيكون من الأفضل إذا كنت تستخدم حدث DataBinding.

ASPX Markup:

<asp:Repeater ID="repTest" runat="server">
    <HeaderTemplate>
        <asp:Label ID="lblHeader" runat="server" />
    </HeaderTemplate>
</asp:Repeater>

رمز وراء:

protected void Page_Load(object sender, EventArgs e)
{
    repTest.ItemDataBound += new RepeaterItemEventHandler(repTest_ItemDataBound);

    int[] testData = { 1, 2, 3, 4, 5, 6, 7, 8 };
    repTest.DataSource = testData;
    repTest.DataBind();
}

void repTest_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        Label lblHeader = e.Item.FindControl("lblHeader") as Label;
        if (lblHeader != null)
        {
            lblHeader.Text = "Something";
        }
    }
}

ها أنت ذا :)

أنا لست متأكدا 100٪ عما إذا كنت بحاجة إلى الانتظار أو عدم وجود بيانات ملزمة بها أم لا، ولكن هذه هي الطريقة التي ستحصل عليها من التحكم في رأسه:

var myLabel = MyRepeater.Controls[0].Controls[0].FindControl("MyLabel") as Label;
myLabel.Text = "Hello World";

ربما يجب عليك كسر ذلك في خطوط متعددة والتحقق للتأكد من وجود كائن في عناصر التحكم [0].

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top