0

私は一般的に ASP.Net、C#、および OOP の初心者であり、クラス、オブジェクト、メソッドなどについて正しいパラダイムを理解しようとしています。

DataTableRepeater.ItemDataBound イベントからアクセスしたいと思います。DataTableメソッドがアクセスできるようにするには、どこに作成しますか? ItemDataBound が呼び出されるたびに DataTable を作成したくありません。一度だけです。それは別のクラスですか、それとも同じクラスの別のメソッドですか、それとも何か他のものですか?

HeaderTemplateこれを使用して、のコントロールに値を設定したいと考えていますRepeater。これが私のコードです:

public partial class test : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        int numPages = 3, numItems = 10;

        int[] parentRepeatCnt = Enumerable.Range(0, numPages).ToArray();
        int[] childRepeatCnt = Enumerable.Range(0, numItems).ToArray();

        ParentRepeater.DataSource = parentRepeatCnt;
        ParentRepeater.DataBind();

        foreach (int i in parentRepeatCnt)
        {
            Repeater ChildRepeater = ParentRepeater.Items[i].FindControl("ChildRepeater") as Repeater;
            ChildRepeater.DataSource = childRepeatCnt;
            ChildRepeater.DataBind();
        }
    }

    public void ChildRepeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Header)
        {
            Label Label1 = e.Item.FindControl("Label1") as Label;
            // access DataTable here
            Label1.Text = myDataTable.Rows[0]["item"].ToString();
        }

    }
}

また、私の既存のコードを自由に批評してください。ありがとう!

4

1 に答える 1

0

パブリック部分クラスのテスト: System.Web.UI.Page {

public datatable mydatatable = new datatable();

protected void Page_Load(object sender, EventArgs e)
{
    int numPages = 3, numItems = 10;

    int[] parentRepeatCnt = Enumerable.Range(0, numPages).ToArray();
    int[] childRepeatCnt = Enumerable.Range(0, numItems).ToArray();

    ParentRepeater.DataSource = parentRepeatCnt;
    ParentRepeater.DataBind();

    foreach (int i in parentRepeatCnt)
    {
        Repeater ChildRepeater = ParentRepeater.Items[i].FindControl("ChildRepeater") as Repeater;
        ChildRepeater.DataSource = childRepeatCnt;
        ChildRepeater.DataBind();
    }
}

public void ChildRepeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Header)
    {
        Label Label1 = e.Item.FindControl("Label1") as Label;
        // access DataTable here
        Label1.Text = myDataTable.Rows[0]["item"].ToString();
    }

}

}

于 2012-12-25T05:35:14.223 に答える