2012-05-09 22 views
2

まず、私は実際にDBAでWeb開発者ではないので、私が書くものはおそらく醜いと思われます。私はウェブサイトを構築しています(彼らは私が試してみると私に尋ねました)。チェックしたときに同じアクションを持つ168個のチェックボックスがあります。しかし、これらのアクションは同じですが、異なるコントロール(チェックボックスに関連する)で実行されます。 168条件のswitch文を持つ代わりに、次のようなことをすることができますか?変数に基づいて動的にコントロールを作成する

CheckBox myCB = (CheckBox)(sender); 

String mySTR = myCB.ID.ToString(); 
String myGVstr = “gv” + mySTR.Substring(mySTR.IndexOf(‘cb’) + 1); 
String myBTNstr = “btn” + mySTR.Substring(mySTR.IndexOf(‘cb’) + 1); 

GridView myGV = myGVstr; 
Button myBTN = myBTNstr; 

// Do what I need to do with these controls 
... 

答えて

1

これは本当に実行可能なものではありません。たぶん、あなたは大きな配列にすべてのコントロールを配置することができます読み込んで?各コントロールを配列に配置するには1つの大きなコードセクションが必要ですが、後で同様の(より信頼性の高い)方法でアクセスできます。

このようにすると、「FindControl」メソッドが使用される可能性があります。

http://msdn.microsoft.com/en-us/library/486wc64h.aspx

のような何か...

GridView myGV = (GridView)FindControl(myGVstr) 

テストしたが、うまくいくかもしれません。

+0

また、チェックボックス(またはチェックボックスID)をキーとして辞書を検討することもできます。 – Servy

+0

可能性がありますか?私はそれを書いているので、私は非常に厳密な命名 "標準"を使用しているので、あなたがこのようにしなければならないかどうか心配する必要はありません。 – Grixxly

+0

私はそれを働かせることができませんでした。私はグラブしようとしているGridViewをハードコーディングしていて、myGVはまだnullです。 FindControlを '(GridView)this.Page.FindControl(" gvA1 ");に変更しようとしましたが、まだサイコロはありませんでした...これは、同じ29行を168回コード化しなければならないことを期待していました。 ... – Grixxly

関連する問題