- PR -

Gridviewの行毎のボタンのonClickイベントで値を渡したい。

投稿者投稿内容
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-20 16:40
お世話になります。
C# ASP.NET2.0で開発しています。
以下のファイル名、ダウンロードボタンの行を表示するようになっております。
やりたい事としましては、onClickイベントを発生させた時にファイル名を
プログラム側に渡したいのですがどのようにすればよろしいでしょうか?
クリックしたボタンの行のファイル名列のパラメータをプログラム側で取得したい
です。
ご教授よろしくお願いいたします。
<Columns>
<asp:BoundField DataField="TEMPNM" HeaderText="ファイル名" SortExpression="TEMPNM" />
<ItemTemplate>
<asp:Button ID="Button2" runat="server"
CausesValidation="False"
CommandName="Download" OnClick="DL_Click"
Text="ダウンロード" />
</ItemTemplate>
</Columns>
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2008-11-20 17:15
プログラム側とは?同じ画面内?
いつ取得したいのです?
クライアント側の処理でということです?
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2008-11-20 17:30
とりあえずよくわかりませんが、

RowCommandイベントのe.CommandArgumentで行が取得できます。
それを基にGridViewRowにキャストすればいけそうですか?

SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-20 17:36
>108様
説明不足ですみません。C#も初心者なもので。
プログラム側とはイベントで呼び出した以下の関数側で取得したいのです。
protected void DL_Click(object sender, EventArgs e)
{
     1,ここでファイル名取得
     2,取得したファイル名を使い以下サーバー内ファイルダウンロード処理

    }

サーバー側の処理になります。
イメージがわかないのですがRowCommandイベントを調べてみます。
2はできているのであとはファイル名を取得しパスを作るだけなのですが・・・




[ メッセージ編集済み 編集者: SANB 編集日時 2008-11-20 17:39 ]

[ メッセージ編集済み 編集者: SANB 編集日時 2008-11-20 17:40 ]
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-20 19:00
ちょっと調べてやってみたのですが・・・

<ItemTemplate>
<asp:Button ID="Button2" runat="server"
CausesValidation="False"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
CommandName="Download" Text="ダウンロード" />
</ItemTemplate>

メソッド
protected void GridView1_RowCommand(object sender,GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
int index = Convert.ToInt32(e.CommandArgument);
   GridViewRow row = GridView1.Rows[index];
   }

}
としたのですがステップイン実行をしてもメソッドが呼ばれませんでした。
なぜでしょうか??
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-20 19:44
メソッドを呼ぶことはできて行の情報をとれてるみたいです。
あとはフィールドの値を取得するだけです。
もう一歩・・・
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-11-20 20:10
セルのテキスト取得できました。ありがとうございました。
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2008-11-21 09:29
すいません <asp:Button
となってましたね。
こちらこそよく読んでいませんでした。
記憶のみで記述していましたので失礼しました。

<asp:CommandField ButtonType="Button"
だと思いこんでいました。

とりあえず解決したようで、よかったです。

スキルアップ/キャリアアップ(JOB@IT)