- PR -

GridViewの複数のボタン

1
投稿者投稿内容
ぶぅあ
会議室デビュー日: 2008/08/04
投稿数: 2
投稿日時: 2008-08-04 16:13
いつもお世話になっております。

今回、初めて投稿させて頂きます。

開発環境
 WindowsXP
 VisualStudio2005
 C#でweb開発
  
まだまだ、初心者です。
似たような質問があって、それを参考に、
なんとか自力で解決しようと思ったのですが
うまくできず、悩んでいます。

質問 -------------------------------------------------

GridViewで
1行に3つのButtonFieldを設けています。

 ボタンA
 ボタンB
 ボタンC

このボタンが押下された場合に、

 ボタンAなら「0」
 ボタンBなら「1」
 ボタンCなら「2」

という値を取得できるようにしたいのですが。。。


やりたい処理の流れは、

 ・あるデータをGridViewに一覧表示
 ・ボタンが押下されたら、次画面に遷移
 ・詳細データを表示
  ※この時に、ボタン押下時に取得した値を使用したいのです。

そこで、
GridView内にButtonFieldを作成し、
ボタンを押下後に、対象の行の値も取得したいので、
CommandNameを「Select」にしたものを3つ用意しました。

 <asp:ButtonField ButtonType="Button" CommandName="Select" Text="XXX"></asp:ButtonField>

ボタン押下時に
GridView_SelectedIndexChangedイベントを呼び出し、行の値は取得
できるのですが、3つのボタンのうちどれが押されたのかを
判別できないのが現状です。

テンプレートを使い、
ButtonのCommandArgumentに値をセットし、RowCommandイベントで
取得しようと、試みたのですが、うまくイベントが
発生してくれず、悩んでいます。

最終的に、質問の内容は、
 3つのボタンのうちどのボタンが押下されたのかを
 判別したいけど、やり方がわからない、
です。

文章が下手で、説明が分かり辛いかもしれませんが、
どなたかご教授を宜しくお願い致します。

[ メッセージ編集済み 編集者: ぶぅあ 編集日時 2008-08-04 16:15 ]
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-08-04 17:11
引用:

ぶぅあさんの書き込み (2008-08-04 16:13) より:

開発環境
 WindowsXP
 VisualStudio2005
 C#でweb開発

テンプレートを使い、
ButtonのCommandArgumentに値をセットし、RowCommandイベントで
取得しようと、試みたのですが、うまくイベントが
発生してくれず、悩んでいます。



同じ環境ですが、私のところではきちんとRowCommandイベントで拾えています。
コード:
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button1" runat="server" CommandArgument="0" CommandName="Select" Text="A" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button2" runat="server" CommandArgument="1" CommandName="Select" Text="B" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button3" runat="server" CommandArgument="2" CommandName="Select" Text="C" />
                    </ItemTemplate>
                </asp:TemplateField>

ぶぅあ
会議室デビュー日: 2008/08/04
投稿数: 2
投稿日時: 2008-08-06 13:13
rainさん回答ありがとうございました。


<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CommandArgument="0" CommandName="Select" Text="A" />
</ItemTemplate>
</asp:TemplateField>

この部分の書き方は、まったく同じでした。
で、RowCommandイベントが拾えなかった原因が、
GridViewのEnableViewStateが「false」になっていたから見たいです。
この部分は、特に必要なかったので、
削除したら、正常にイベントを拾うことができ、
目的の動作を得ることができました。

回答本当にありがとうございました。
また、宜しくお願い致します。
1

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