0

動的に作成されたグリッドビューでコントロールの値にアクセスする方法がわかりません。問題は、コントロールの名前がわからないことです。コントロールの名前を知っていれば、これを行うことができます:

string dropDownListText =((DropDownList).row.FindControl("DropDownList1")).SelectedItem.Value;`

コントロールのタイプとそれが入っているセルを知っています。コントロールの値にアクセスできるようにする必要があるコントロールに関する情報を使用する方法はありますか?

4

3 に答える 3

2

それがどのセルかわかっている場合は、次のようなことができます。

TableCell tc = GridView1.Cells[indexOfCell]; 
// where GridView1 is the id of your GridView and indexOfCell is your index
foreach ( Control c in tc.Controls ){
    if ( c is YourControlTypeThatYouKnow ){
        YourControlTypeThatYouKnow myControl = (YourControlTypeThatYouKnow)c;
    }
}

セルが正確にわからない場合は、いつでも各セルをループできます。Linqにはもっと良い方法があると確信しています。

Linqを使用(これでうまくいくと思います)

var controls = GridView1.Cells[indexOfCell].Cast<Control>();
YourControlTypeThatYouKnow myControl = (YourControlTypeThatYouKnow) controls.Where( x => x is YourControlTypeThatYouKnow).FirstOrDefault();
于 2012-05-03T15:49:29.190 に答える
0

GridView の ItemDataBound イベント ハンドラーで、次のように table-cell にアクセスします。セル内で Controls コレクションを使用すると、セルに埋め込まれた ASP コントロールにアクセスできます。

TableCell cell = e.Item.Cells[0];
if (cell.Controls.Count > 0)
{
   cell.Controls[0].Visible = false;
}
于 2012-05-03T15:41:37.903 に答える
0

私は同じ問題を抱えていました。CommandName="ProjectClick" のようなコマンド名をフィールドに追加します。次に、rowcommand を追加し、row コマンドで次のようにします。

if (e.CommandName.Equals("ProjectClick")) {
}

または、次のテキストを使用できます。

if (e.CommandName.Equals("")) {
    if (((System.Web.UI.WebControls.LinkButton)(e.CommandSource)).Text.Equals("Projects")) {
    }
}
于 2012-05-03T15:50:20.883 に答える