2
DropDownListのSelectedIndexChangedイベントにCheckBoxListを動的に追加する必要があります。私はこれを達成しましたが、ポストバックでその価値を保持することはできません。ここでAsp.Netのポストバックで動的に作成されたコントロールの値を取得する
は、私がこれまで行っているものです:
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));
}
}
}
グレートを実行するコードを変更せずに、それを試してみて、事前に使用することができます!チェックボックスリストcbxを設定すると、 – Shah
Andomarが機能しました。私はそれをプレースホルダに追加しないでください。結果は繰り返し追加されます。 私do CbxList.Items.Clear();それから私はまた、それは私がチェックボックスのリストのselecedIndexChangeを必要としています。ハマった。 – Shah
@ user1057735: 'if(!IsCallback &&!IsPostBack)'アイテムだけを追加してください。コメントを追加するのではなく、新しい質問をしてください。 SOのすべてが答えるチャンスを得ます! – Andomar