datalist在运行时生成代码:如何在页面回发后访问datalist元素的值?
void CreateDATELIST(Control container)
{
var st = settings.CustomPossition();
foreach (var item in settings.CustomPossition())
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Possition");
dt.Columns.Add("Production");
dt.Columns.Add("dpo");
dt.Columns.Add("WorkDay");
DataRow dr;
foreach (var users in item.Users)
{
dr = dt.NewRow();
dr["Name"] = users.Name;
dr["Possition"] = users.Position.Name;
dr["Production"] = users.DailyGoalAmount * (double)(users.WorkDays / 12;
dr["dpo"] = users.DailyGoalAmount;
dr["WorkDay"] = users.WorkDays;
dt.Rows.Add(dr);
dt.AcceptChanges();
}
DataList dataList = new DataList();
dataList.ItemTemplate = Page.LoadTemplate("Commnets.ascx");
container.Controls.Add(dataList);
dataList.DataSource = dt;
dataList.DataBind();
}
}
答案 0 :(得分:0)
如果您将Id
分配给动态创建的DataList
,如下所示:
DataList dataList = new DataList();
dataList.ID = "dlstUser";
然后:用c.FindControl("lblName")
更改控制ID,无论控制和控制如何。您在模板用户控件中拥有的ID,并在按钮单击时或在您想要datalist
的值的任何情况下使用以下代码。
DataList dataList = pnlDataList.FindControl("dlstUser") as DataList;
foreach (DataListItem dli in dataList.Items)
{
ControlCollection controls = dli.Controls;
foreach (Control c in controls)
{
Label lblName = c.FindControl("lblName") as Label;
}
}
答案 1 :(得分:0)
您可以订阅DataList的 ItemDataBound 事件。
DataList dataList = new DataList();
dataList.ItemDataBound += dataList_ItemDataBound;
并在事件处理程序中:
void dataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
var item = e.Item.DataItem as DataRowView;
}