2012-01-11 4 views
2

私は、C#でASP.NETで選択した行の特定のページにドリルダウンするためにGridviewの "select"リンクを取得しようとしています。このグリッドビューは、page_loadで動的に生成され、かなり単純なSQL選択クエリからデータバインドされています。各行には一意のIDがあり、その行の選択ボタンをクリックすると、URLのパラメータとして渡されます。したがって、id値が9の行(「gridview」で定義されているIDではなく、SQLクエリからのID)で「選択」ボタンをクリックすると、moreDetail.aspxなどのアドレスにリダイレクトされます?id = 9。グリッドビューでパラメータドリルダウン

しかし、idをイベントハンドラに渡そうとすると、問題が発生しました... GridView.SelectedIndexChangingは、通常の(オブジェクト送信者、EventArgs e)をパラメータとして受け取ります。 Page_Load EventArgsクラスは役に立たない。先ほど取得したIDをイベントハンドラに渡す方法が見つからないようです。

多くの検索の後、EventArgsを拡張するクラスを作成しようとしましたが(明らかに余分なパラメータが追加されています)、(オブジェクト送信者、EventArgs e)以外のパラメータは使用できません。私は理論的にはイベントハンドラ内でSQLクエリをやり直すことができますが、それは私が探しているものを達成するためのひどい方法のようです。だから私は誰かが私がここで間違っているものを見ることができることを望んでいます。私は確かに何かが分からないと確信しています。

いくつかのコード - grid.SelectedRow.Cells [0]私が渡したいパラメータが含まれます:をPage_Loadで

GridView grid = new GridView(); 
grid.DataSource = source; 
CommandField selectField = new CommandField(); 
selectField.ShowSelectButton = true; 
selectField.SelectText = "View Jobs"; 
grid.Columns.Add(selectField); 
grid.SelectedIndexChanging += grid_SelectedIndexChanging; 
grid.DataBind(); 
content.Controls.Add(grid); 

とイベントハンドラ:

protected void grid_SelectedIndexChanging(object sender, EventArgs e) 
    { 
     Response.Redirect("ViewCustomer.aspx?id=" + grid.SelectedRow.Cells[0]); 
    } 

をグリッドの範囲がハンドラに及ばないので、明らかにこれは機能しません...しかし、どのようにしてすることができます私はそのデータにアクセスできますか?あなたはあなたの呼び出しのGridViewを参照するためにGridViewに送信者をキャストする必要が

答えて

1

:素晴らしい

protected void grid_SelectedIndexChanging(object sender, EventArgs e) 
{ 
    GridView grid = (GridView)sender; 
    Response.Redirect("ViewCustomer.aspx?id=" + grid.SelectedRow.Cells[0]); 
} 
+0

、私は簡単な方法でなければなりませんでした、私はどこでもそれを見つけることができませんでしたが知っていました。 ありがとうございました。 – Hecksa

関連する問題