特定の条件に基づいて、page_load() でいくつかのチェックボックス、ドロップダウンリスト、およびテキストボックスを動的に作成しました。同じページに、設計時に (aspx ページで) 作成された [送信] ボタンがあります。[送信] ボタンのクリック イベント ハンドラーで、ドロップダウン リストなどからチェックされ、選択された値をすべて取得する必要があります。しかし、これらのコントロールは設計時ではなく page_load で作成されるため、できませんでした任意の値を取得します。値を取得する方法はありますか?
アップデート:
あと 2 つの問題が残っています。
drp.selectedIndex は常に -1 ではなく 0 に初期化されます。Page_Init に drp.selectedIndex=-1 を追加しました。ただし、cmdShow_Click では、drp.selectedIndex は 0 です。
また、テキストボックスの可視性はチェックボックスによって制御されます。次のコードがあります。ただし、ポストバック中は、チェックボックスがオンになっていても、テキストボックスは表示されません。それを修正する方法はありますか?
CheckBox cb = new CheckBox();
cb.ID = "cb" + id;
cb.ClientIDMode = ClientIDMode.Static;
cell.Controls.Add(cb);
cell.Controls.Add(new LiteralControl("<br />"));
TextBox tb = new TextBox();
tb.ID = "txt" + id;
tb.ClientIDMode = ClientIDMode.Static;
tb.Attributes.Add("style", "display:none");
cb.Attributes.Add("onclick", "return cbOtherClicked('" + cb.ClientID + "', '" + tb.ClientID + "')");
cell.Controls.Add(tb);
cell.Controls.Add(new LiteralControl("<br />"));
function cbOtherClicked(control1, control2) {
var cbOther = document.getElementById(control1);
var txtOther = document.getElementById(control2);
if (cbOther.checked) {
txtOther.style.display = "block";
}
else {
txtOther.style.display = "none";
}
}