質問

私はこれを行うための見つけたすべてのサンプルは、これを行うためには、私のページのOnLoadの外の関数を記述で構成されていますが、それについて移動するより簡潔な方法がある場合、私は興味があります。私はHeaderTemplateの内側のラベルを持っている、と私は単なる文字列にラベルのテキストを設定します。ラベルはリピーターの外にある場合、私は次の操作を行うことができます:

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

これを行うための簡潔な方法はありますか?

役に立ちましたか?

解決

のあなたのヘッダテンプレート内で次のことを試してみてください

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

他のヒント

あなたはDataBindingイベントを使用していた場合、それが良いだろう。

ASPXマークアップ:

<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