0

実行時にデータリストが生成したコード: ページのポストバック後にデータリスト要素の値にアクセスするにはどうすればよいですか?

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

2 に答える 2

0

Id次のように、DataList作成したものに動的に割り当てる場合:

DataList dataList = new DataList();
dataList.ID = "dlstUser";

次に、コントロールIDをc.FindControl("lblName")テンプレートユーザーコントロールにあるコントロールと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;
    }
}
于 2012-12-01T13:23:20.700 に答える
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;
}
于 2012-12-01T13:32:38.273 に答える