2011-08-06 5 views
2

グリッドビューで特定の行の値を見つける方法を教えてください。グリッドビューに10行4列があるとします。私は行インデックスから行番号を見つけることができることを知っていますが、行5の列2の値が何か(私のgridviewごとに)何かを見つけることができますか、またはセルの値を知ることができますか?gridviewの特定の行の値を見つけるにはどうすればよいですか?

+0

GridViewのマークアップと関連するイベントコードを送信すると、表示されている問題の解決に役立ちます。 – Tim

答えて

4

次を使用します。

.Rowsコレクション

あなたはFindControl方法に興味があるなら、あなたのために最も適したイベントがRowDataBound

CustomersGridView.Rows[rowIndex].Cells[cellIndex].Text 

より:

void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var control = e.Row.Cell[cellIndex].FindControl("ControlID"); 
     e.Row.Cells[1].Text = ((TypeOfControl)control).Text; 
    } 
} 
+0

cellIndexで何を指定する必要がありますか? –

+0

。イベントでテキストが取得されていません。インテリセンスでは出ません。 –

+0

@Xor powerコントロールを必要なタイプにキャストする必要があります。回答を更新しました。 – VMAtm

3

これはトリックを行う必要があり、列ごとに一つのセルを仮定:

ため、場合(行が構築されている方法に応じて、行5

であなたに2列の値を与える

string cellValue = GridView1.Rows[4].Cells[1].Text; 

たとえば、1つの列にDropDownListなどのコントロールがある場合)、FindControl(controlID)を行う方がよい場合があります。 UPDATE

を使用すると、ID =「ddlMyDropDown」と第二列にDropDownListを持って言う:

にコードを配置するためのイベント
DropDownList ddl = (DropDownList)GridView1.Rows[4].FindControl("ddlMyDropDown"); 

は、なぜあなたは見つけるためにしようとしているに依存します値。あなたが/なぜあなたは値を取得する必要があると思い際の例を与えることができれば、我々はそれがおそらくに行くべきイベントを伝えることができます。

UPDATE 2

を行のボタンがありますと仮定すると、 、RowCommandイベントを処理:行のボタンがクリックされるたびに、あなたがクリックされたボタンを確認する必要があると思いますのでRowCommandが、発射されるよう

protected void GridVie1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 

    rowIndex = Convert.ToInt32(e.CommandArgument); 

    DropDownList ddl = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("ddlMyDropDown"); 

    // Do something 
} 

は、しかし、ここで注意が必要ですか。ボタンのCommandNameを設定する場合はe.CommandNameを使用しても構いませんが、あらかじめ定義された名前がいくつかあることに注意してください。

詳細については、GridView.RowCommand Eventを参照してください。

質問をより詳細な情報で更新することができます(なぜ、値を取得する必要があるのか​​、そしてボタンをクリックするようなGridViewとのやりとりによってそのプロセスが開始される)場合、より正確な回答を提供できます。

私は夜中になってしまいましたが、明日このスレッドで確認します。

+0

FindControlの操作方法は?プラス、コードを置く場所は、どのイベントですか? –

+0

@ Xor power - 私の編集を参照してください。上記の例(ddl)の – Tim

+0

では、クリックした行のユーザーが表示されません。私はコマンドの引数としてID(主キー列)を提供しているので、私はコマンドの引数として与えることはできません。したがって、どちらの行がクリックされたかを知る必要があります。または、コマンドの引数として行インデックスを与えている場合は、IDの値を知る必要があります(主キー列) –

2

あなたが知っている場合セルの値は、行を見つけることができます

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.Cells[0].Text.Contains("sometext")) 
     { 
      //code here.. 
     } 
    } 
} 
1
string cellText = gridView.Rows[5].Cells[2].Text; 
+0

私はすべてのセルでヌル値を取得していますなぜそうですか? –

+0

行インデックスが0以上かどうかを確認する –

関連する問題