可以从Repeater.ItemDataBound访问的数据表

本文关键字:访问 数据表 ItemDataBound Repeater | 更新日期: 2023-09-27 17:49:32

我是ASP新手。. Net, c#和OOP,我正在尝试进入关于类,对象,方法等的正确范例。

我想从中继器访问DataTable。ItemDataBound事件。我应该在哪里创建DataTable以便方法可以访问它?我不希望每次调用ItemDataBound时都创建DataTable,只要一次。这是一个单独的类,还是同一个类中的另一个方法,还是别的什么?

我想用它来设置RepeaterHeaderTemplate控件上的值。下面是我的代码:

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();
        }
    }
}

另外,请随意批评我现有的代码。谢谢!

可以从Repeater.ItemDataBound访问的数据表

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

public datatable mydatatable = new data ();

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();
    }
}

}