繁体   English   中英

在Asp.Net中检索回发动态创建的控件的值

[英]Retrieving values of dynamically created controls on Post back in Asp.Net

我需要在DropDownList的SelectedIndexChanged事件上动态添加CheckBoxList。 我已经实现了这一点,但是我无法在回发中保留其价值。

到目前为止,这是我所做的:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    loadTracks();//Needs to generated dynamically
}

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
    loadDegrees();
    }
    loadTracks();
}

public void loadTracks()
{
    try
    {
        ConfigurationDB objConfig = new ConfigurationDB();
        DataSet ds = objConfig.GetTracksByDegreeID(
            Convert.ToInt32(ddlDegree.SelectedValue.ToString()));
        CheckBoxList CbxList = new CheckBoxList();

        CbxList.ID = "Cbx";
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            CbxList.Items.Add(new ListItem(ds.Tables[0].Rows[i]["Track_Name"]
                .ToString(), ds.Tables[0].Rows[i]["ID"].ToString()));
        }
        ph.Controls.Add(CbxList);
        ViewState["tracks"] = true;
    }
    catch(Exception ex)
    {
        Response.Write(ex.Message);
    }
}

//For testing, I added a button and on its click I have added this code

protected void btnDetails_Click(object sender, EventArgs e)
{
    CheckBoxList Cbx = (CheckBoxList)ph.FindControl("chk");
    foreach (ListItem ex in Cbx.Items)
    {
        if (ex.Selected)
        {
            Response.Write(String.Format("You selected: <i>{0}</i> <br>", ex.Value));
        }
    }
}

可能是拼写错误:

CbxList.ID = "Cbx";

VS

CheckBoxList Cbx = (CheckBoxList)ph.FindControl("chk");

你可以尝试在不改变代码,并使用预先PreRender只运行你loadTracks()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM