2010-12-10 13 views
2

私は10行のグリッドビューを持っています各ページに6行を表示しています画像のボタンをクリックすると、各行にテキストボックスと画像ボタンがあります。動作していますが、ページインデックスをクリックすると、行コマンドにエラーが表示されます。行タイプがデータ行かどうか、gridview行コマンドイベントで確認できますか。現在の行を確認するデータ行です

protected void gvgridview1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); 
     TextBox txtgvGroupName = (TextBox)gvRow.FindControl("txtgvGroupName"); 
     ImageButton imgbtn = (ImageButton)gvRow.FindControl("imgbtn"); 
     if (e.CommandName == "Edit") 
      { 
       imgbtn.Visible = false; 
      } 
    } 
+0

の最初の行でif (e.CommandSource is ImageButton)をチェックする必要があります。私はあなたのインデックスリンクがImageButtonではない、(ImageButton)e.CommandSourceのためにエラーが発生していると思います。行コマンドの – Mihailo

答えて

0

あなたはGridViewRowインスタンスの行型プロパティをチェックしようとしたことがあり、次のように私が使用していますコードはありますか?

+0

は、行タイプのプロパティを見つけることができませんでした –

+0

これは奇妙です。これによると:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.rowtype.aspx GridViewRowはそのプロパティを持っています。 – willvv

+0

Gridview_RowCommandには、e.rowtypeのようなプロパティはありません。 –

0

e.Row.RowTypeを確認すると、RowTypeとDataControlRowType列挙型を比較す​​ることができます。

[編集]それはあなたが行を保持している方法と関係があるのだろうかと思う。私は試したコードは次のとおりです。

GridViewRow row = Gridview.Rows[int.Parse(e.CommandArgument.ToString())]; 

その後、私はrow.RowTypeかなりhappliyを使用することができます。あなたのために試してみる価値があるかもしれません。

DataControlRowType

+0

rowコマンドでは、私はrowtypeプロパティを見つけることができませんでした –

+0

@Mathew試したいかもしれない何かで私の答えを更新しました – PhilPursglove

+0

sortのcommandArgumentがSortExpressionなので、ソートを使用している場合は失敗します。 – dividius

0

その後、あなたの状態を書く

(e.Row.RowType == DataControlRowType.DataRow)場合は、System.Data.DataRow

GridViewRow gvRow = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); 
DataRow drow = gvRow.DataItem as DataRow 

if(drow!=null) 
{ 
    // row is DataRow 
} 
+0

私のコードが正常に動作しています。グリッドビューのページインデックスをクリックして次のページを表示するときに問題が発生します。 –

3

をrefferingていると仮定し、これを試してみてください。

+0

GridViewCommandEventArgsに行プロパティがありません。 – dividius

1

ここのDataRowとはほとんどは、代わりにあなたはあなたが取得している何のエラー投稿する必要がありますあなたのgvgridview1_RowCommand

+0

ありがとうございます。 strTemp = string.Empty; strTemp = e.CommandSource.ToString(); if(strTemp == "System.Web.UI.WebControls.ImageButton") { –

+1

あなたは 'if(e.CommandSource is ImageButton)'を使うことができますか? – Bolu

+0

よろしくおねがいします。ご使用いただきありがとうございます。使用しているのは初めてです。もう一度ありがとうございます。 –

関連する問題