C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ボタン + Repeaterの処理について


(過去ログ 22 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■9333 / inTopicNo.1)  ボタン + Repeaterの処理について
  
□投稿者/ BCT (1回)-(2007/10/24(Wed) 18:43:38)

分類:[ASP.NET (C#)] 

2007/10/24(Wed) 18:47:48 編集(投稿者)

よろしくお願いいたします。
現在C#を利用して作成しています。

まず配列の内容をRepeaterを使い、表示しています。
各行にはボタンを配置しており、押されたボタンの行を削除する処理を行いたいと思っています。

1.「どの行」のボタンが押されたのかが取得できない。
2.ボタンから呼び出されるメソッドに引数を受け渡せない。

特に1について、困っております。
よろしくお願いいたします。
引用返信 編集キー/
■9339 / inTopicNo.2)  Re[1]: ボタン + Repeaterの処理について
□投稿者/ はつね (303回)-(2007/10/24(Wed) 19:28:35)
はつね さんの Web サイト
No9333 (BCT さん) に返信
> 1.「どの行」のボタンが押されたのかが取得できない。

できます。

> 2.ボタンから呼び出されるメソッドに引数を受け渡せない。

きっと違うイメージでしょうけれど、渡せます。

さて、まず結論を書きましたので、次にその理由を述べる事と致しましょう。

Repeaterコントロールでボタンを押したときのイベントをキャッチするには、ItemCommandをハンドルしてあげる必要があります。VB2005のコードで申し訳ないのですが、例えば次のようになります。
Public Sub DetailsButton(ByVal source As Object, ByVal e As WebControls.RepeaterCommandEventArgs) Handles ListView.ItemCommand
End Sub
このパラメタeに「どの行」の情報が入ってます(たぶん)。

ボタンから呼び出されるメソッドに引数を受け渡すのではなくボタンのCommandArgumentプロパティを指定して、それを↑のイベントプロシージャで取得する事で、引数を渡す事ができます。


引用返信 編集キー/
■9348 / inTopicNo.3)  Re[2]: ボタン + Repeaterの処理について
□投稿者/ BCT (2回)-(2007/10/24(Wed) 22:13:00)
No9339 (はつね さん) に返信

はつね さん、ありがとうございます!
今自宅で試せる環境がないので、明日の朝試しまして、早速結果を返信したいと思います。

ほんと助かります m(><)m
引用返信 編集キー/
■9360 / inTopicNo.4)  Re[3]: ボタン + Repeaterの処理について
□投稿者/ BCT (3回)-(2007/10/25(Thu) 10:05:25)
BCTです。少し試してみました。

void command_Button(Object sender, CommandEventArgs e) {
//e.CommandArgumentに数値が入ってくる
}

<asp:Repeater id="repeater1" OnItemCreated="R1_ItemCreated" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<asp:Button Text="asp:Button 1"
CommandName="asp:Button"
CommandArgument="1"
OnCommand="command_Button" runat="server" />
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>


今は CommandArgument に各行の数値を埋めることが出来ず、固定値のみ受け取れています。
下記のページでイベントにて、数値を埋め込むことが書かれているのですが、実現できていません。
http://natchan-develop.seesaa.net:80/article/40604197.html

VSがうまく動かず、四苦八苦しております・・・
この辺教えていただけると幸いです。
よろしくお願いいたします。

自力でうまく行きましたら、また書き込みます。
引用返信 編集キー/
■9367 / inTopicNo.5)  Re[4]: ボタン + Repeaterの処理について
□投稿者/ はつね (305回)-(2007/10/25(Thu) 11:42:49)
はつね さんの Web サイト
No9360 (BCT さん) に返信
> 今は CommandArgument に各行の数値を埋めることが出来ず、固定値のみ受け取れています。

Repeaterで表示する元ネタはDataSetとかにはいっていますか?
もしはいってるようであれば、そこに各行に埋めたい数値を入れておく列をつくって(または決定して)下さい。
そいつをCommandArgumentに指定してあげると良いでしょう。
例)
CommandArgument='<#・・・・・・・・・・・・・・#>'
こんな感じにaspx.cs側の定義のところに埋めこみます。

#
ちと時間なくて、これコピペすれば動くよーってコード書く暇がないのですが、色々調べてみると付随的に必要な知識も手に入るしそれによって知らないと嵌る事も未然に防げると思うから、いろいろやってみてー。

引用返信 編集キー/
■9371 / inTopicNo.6)  Re[5]: ボタン + Repeaterの処理について
□投稿者/ BCT (7回)-(2007/10/25(Thu) 12:14:17)
はつねさん、ありがとうございます。
HPの情報を実現しようと、そっちで四苦八苦してしまい、
簡単な方法を見落としてました。

先ほどボタン番号を取得して、配列から削除するところまできました。
本当にありがとうございます!

もう一息です。


void command_Button(Object sender, CommandEventArgs e) {
list1.RemoveAt(Convert.ToInt32(e.CommandArgument) - 1);
Server.Transfer("TEST.aspx");
}

<asp:Repeater id="repeater1" runat="server">
 <HeaderTemplate>
 </HeaderTemplate>
 <ItemTemplate>
  <asp:Button Text="削除"
  CommandName="delButton"
  CommandArgument="<%# Container.ItemIndex + 1 %>"
  OnCommand="command_Button" runat="server" />
 </ItemTemplate>
 <FooterTemplate>
 </FooterTemplate>
</asp:Repeater>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -