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

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

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

Re[1]: 動的ボタンをクリックすると別ページに開く


(過去ログ 133 を表示中)

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

■78538 / inTopicNo.1)  動的ボタンをクリックすると別ページに開く
  
□投稿者/ ピカチュウ (3回)-(2016/01/23(Sat) 14:01:16)

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

ASP.net C# 2008

-------------------------------| 
|  |マシン1|マシン2|マシン3 | 1行
| |-------------------------|
|A |ボタン |ボタン |ボタン  | 2行
| |-------------------------|
|  |値1  |値2  |値3     | 3行
-------------------------------|
| |マシン4|マシン5|マシン6 | 4行
| |-------------------------|
|B |ボタン |ボタン |ボタン  | 5行
| |-------------------------|
|  |値4  |値5  |値6     | 6行
-------------------------------|
| |マシン7|マシン8|マシン9 | 7行
| |-------------------------|
|C |ボタン |ボタン |ボタン  | 8行
| |-------------------------|
|  |値7  |値8  |値9     | 9行
-------------------------------|
以降、全て動的


Test.aspx
----------------------------------------------------------------------
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="content">
    <asp:Table ID="Table1" runat="server">
    </asp:Table>
</asp:Content>
----------------------------------------------------------------------

Test.aspx.cs
----------------------------------------------------------------------
public partial class Page_Test : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
     //検索
    }
    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        //ライン列(A、B、C・・・)
	foreach(var item in ○○.Count)
	   {
                    TableRow lineRow = new TableRow();
                    TableCell lineCell = new TableCell() { RowSpan = 3 }

                    this.Table1.Rows.Add(lineRow);
                    lineRow.Cells.Add(lineCell);
               
            //マシン行
	  foreach(var item in ○○.Count)
		   {
                        TableCell machineCell = new TableCell()
                        lineRow.Cells.Add(machineCell);
                 }

                    //**ボタン行**
                    TableRow buttonRow = new TableRow();
                    Table1.Rows.Add(buttonRow);

            //ボタン行
	  foreach(var item in ○○.Count)
		   {
                        TableCell buttonCell = new TableCell() 
                        buttonRow.Cells.Add(buttonCell);

                        //ボタンをクリックした時にButton_Clickが呼び出されるようにする
                        Button button = new Button();
                        button.Click += new EventHandler(Button_Click);←ここがイベント発動しない
                 }

                    //***値行***
                    TableRow shotRow = new TableRow();
                    Table1.Rows.Add(shotRow);//行を追加する

            //値行
	  foreach(var item in ○○.Count)
		   {
                        TableCell ValueCell = new TableCell()
                        shotRow.Cells.Add(ValueCell);
                 }
	    }
    }

    protected void Button_Click(object sender, CommandEventArgs e)
    {
       Button btn = (Button)sender;
       //ページに飛ぶ
       Response.Redirect(string.Format("address={0}", btn);
    }
--------------------------------------------------------------------------

ボタン生成での動的ボタンを作成していて、(2、5、8行)クリックするとページを開くようにしています(新規ページかは問わない)
分からないところはボタンを押してもイベントが発動しないです。

HPによると
ボタン生成するときに配列を作る必要と
書かれているけど下記(ボタン生成するときに配列)の様に書いてみましたが、イベント発動されず。。。
button.ID付ける必要なのかよくわからないです。。。


    class numclass
    {
        public static int numcount;
        public static void num()
        {
            numclass.numcount++;
        }
    }

    protected void Page_LoadComplete(object sender, EventArgs e)
    {
		〜
        〜
                Button[] button = new Button[○○.Count];

                foreach (var item in ○○.Count)
                {
                        numclass.num();
                        Array.Resize(ref button, numclass.numcount);//再動的配列
                        button[numclass.numcount - 1] = new Button();
                        button[numclass.numcount - 1].Click += new EventHandler(Button_Click);
                        buttonCell.Controls.Add(button[numclass.numcount - 1]);
		}
		〜
        〜
    }

他に、Page_LoadかPage_Initの所じゃないとダメですか?
(Page_LoadCompleteじゃないとテキストボックス検索のときに取得した値が反映されないから作りたくない・・・)

*イベント発動じゃなくてもクリックしてページに飛べばOKです。(既存のマシン、値を取得して新規ページに表示するだけ)
ご教示の程よろしくお願いします。

引用返信 編集キー/
■78540 / inTopicNo.2)  Re[1]: 動的ボタンをクリックすると別ページに開く
□投稿者/ WebSurfer (787回)-(2016/01/23(Sat) 16:18:36)
No78538 (ピカチュウ さん) に返信

> *イベント発動じゃなくてもクリックしてページに飛べばOKです。(既存のマシン、値を取得して新規ページに表示するだけ)

であれば Button はやめて HyperLink にしておけばよさそうですが?

それができない理由があれば書いてください。
引用返信 編集キー/
■78550 / inTopicNo.3)  Re[1]: 動的ボタンをクリックすると別ページに開く
□投稿者/ ito (12回)-(2016/01/25(Mon) 09:28:38)
No78538 (ピカチュウ さん) に返信
>                         //ボタンをクリックした時にButton_Clickが呼び出されるようにする
>                         Button button = new Button();
>                         button.Click += new EventHandler(Button_Click);←ここがイベント発動しない
ボタンを作成して、イベントハンドラをセットしていますが...
そのボタンがどこにも追加されていないようですが?
表示すらされていないと思います。

引用返信 編集キー/
■78563 / inTopicNo.4)  Re[2]: 動的ボタンをクリックすると別ページに開く
□投稿者/ ピカチュウ (4回)-(2016/01/25(Mon) 22:21:16)
No78540 (WebSurfer さん) に返信
>
> であれば Button はやめて HyperLink にしておけばよさそうですが?
>
> それができない理由があれば書いてください。


理由はないと思いますが、一応ユーザーに聞いてみます。
(ボタンのほうが見た目にしてクリックするのがわかりやすいと思いました。)

動的ボタンでやると難しいですか?



引用返信 編集キー/
■78564 / inTopicNo.5)  Re[3]: 動的ボタンをクリックすると別ページに開く
□投稿者/ WebSurfer (789回)-(2016/01/25(Mon) 22:33:17)
No78563 (ピカチュウ さん) に返信

仕事で Web アプリを作っているのですか?

そうであれば上司や先輩に聞くべき話だと思うのですが・・・ 社内の初心者
をサポートするのはその会社の務めでは? そうでなければ製品品質をどうや
って担保できるのでしょう・・・

> 動的ボタンでやると難しいですか?

イベントが発生しないということなので HyperLink を使ってはいかがかと提案し
たのですが、そのあたりは理解されていますか?

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -