2012-03-28 12 views
3

グリッドビュー内の隠しフィールドの順序番号iがボタンをクリックすると、線グリッドビューで非表示フィールドの値を取得するにはどうすればよいですか?

string sValue = ((HiddenField)GridView1.SelectedRow.Cells[7].FindControl("HiddenField1")).Value; 

がエラー与える「オブジェクトのインスタンスに設定されていないオブジェクト参照」を7

あります

  <asp:TemplateField> 
      <ItemTemplate> 

       <asp:HiddenField ID="HiddenField1" runat="server" 
        Value='<%#Eval("RSS_ID")%>'/> 

      </ItemTemplate> 
      </asp:TemplateField> 

のC#側

else if (e.CommandName == "View") 
{ 
    string sValue = ((HiddenField)GridView1.SelectedRow.Cells[7].FindControl("HiddenField1")).Value;     
} 
+0

はあなたの完全なイベントコード...だけでなく、あなたのグリッドマークアップを投稿することができますか? – NiK

答えて

6

これを試しましたか?

HiddenField field = (HiddenField)GridView.Rows[GridView.SelectedIndex].FindControl("HiddenField1"); 

はいの場合はどうですか。ここで

HiddenField field = GridView1.Rows[e.RowIndex].FindControl("HiddenField1") as HiddenField; 

は、あなたが試みることができるもう一つ、

if(e.Row.RowType == DataControlRowType.DataRow) 
{  
    HiddenField field = e.Row.FindControl("HiddenField1") as HiddenField; 
} 

希望であるこのことができます...歓声

+0

@leventkalayz上記の方法のいずれかを試しましたか? – NiK

+0

しかし、このコードではできませんでしたが、@Dave Dのコードが動作します。私はプロジェクトにそれほど多くのお礼を言いました – leventkalayz

+0

このような単純な解決策を探していたので、時間が無駄でした。ありがとう! – Josh

2

ドロップ細胞の一部

あなたが選択した行を持っている場合:

string sValue = ((HiddenField)GridView1.SelectedRow.FindControl("HiddenField1")).Value; 

コマンド引数からe.rowIndexをお持ちの場合:

string sValue = ((HiddenField)GridView1.Rows[e.rowIndex].FindControl("HiddenField1")).Value; 
1

実際に行を選択したときに、コードが表示されていなくても、SelectedRowにアクセスしようとしています。私の推測では、実際には選択された行を設定しないカスタムコマンドボタンしか使用していないということです。それを修正すればうまくいくはずです。

あなたは/、あなたが値を取得し、あなたの隠されたフィールドにアクセスするためにFindControlメソッドを適用し、その後、自分自身にしたい行を見つけるためにいくつかのメソッドを記述する必要があると考えたくないことができない場合は...

またはもっと完全なソースコードを投稿しようとしています....

関連する問題