グリッドビュー内にドロップダウンリストとテキストボックスを動的に作成しています。テキストボックスは現在無効になっています。これら両方のコントロールの ID は、SQL テーブルから取得されます (したがって、SQL から受け取った値が変更される可能性があるため、それらは本質的に動的でもあります)。
新しく生成されたドロップダウンリストで「その他」が選択されている場合にのみ、テキストボックスを有効にしたい。以下は、私が生成しているドロップダウンリストのコードです:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[0].Visible = false;
e.Row.Cells[1].Width = 400;
e.Row.Cells[2].Visible = false;
e.Row.Cells[3].Visible = false;
e.Row.Cells[4].Visible = false;
e.Row.Cells[5].Width = 300;
e.Row.Cells[6].Visible = false;
e.Row.Cells[7].Visible = false;
e.Row.Cells[8].Visible = false;
e.Row.Cells[9].Width = 300;
string anstype = e.Row.Cells[2].Text;
string ansname = e.Row.Cells[3].Text;
string othertype = e.Row.Cells[6].Text;
string othername = e.Row.Cells[7].Text;
if (anstype == "DropDownList")
{
DropDownList ddl = new DropDownList();
ddl.ID = ansname;
ddl.AutoPostBack = true;
ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
ddl.Width = 300;
e.Row.Cells[5].Controls.Add(ddl);
}
if (othertype == "Free Text")
{
TextBox txt = new TextBox();
txt.ID = othername;
txt.Width = 300;
txt.Enabled = false;
e.Row.Cells[9].Controls.Add(txt);
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddlName = new DropDownList();
ddlName = (DropDownList)sender;
string val = ddlName.SelectedItem.Text.ToString();
if (val == "Other")
{
//ENABLE THE TEXT BOX
}
}
私が考えることができる最も簡単な方法は、テキスト ボックスの名前 (othename 変数) をイベント ハンドラーに渡すことです。C#初心者ですが、やり方がわかりません。助けてください..!!!
!!..編集..!!
テキストを参照する方法を見つけましたが、今直面している別の問題があります。「AutoPostBack」により、GridView 全体が更新され、ドロップダウンリストのイベントもトリガーされません。助言がありますか?