質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

6530閲覧

ボタンをクリックするごとに、数字を増やすには、どうすれば良いか教えてください

kkgw

総合スコア49

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/06/03 12:00

基本的な事で、失礼します。
ASP.NETの初心者です。

ボタンをクリックするごとに、ラベルの数値を増やしたいのですが、
増えません。共有変数のようなものを定義するのだとは思うんですが、
調べても良く分かりません。分かる方で、教えて頂けると幸いです。

C#

1 public partial class WebForm1 : System.Web.UI.Page 2 { 3 int count = 0; 4 protected void Page_Load(object sender, EventArgs e) 5 { 6 7 } 8 // クリック 9 protected void Button1_Click(object sender, EventArgs e) 10 { 11 Label1.Text = "test"; 12 count = count + 1; 13 // ボタンを押すごとに、countを増やしたいのだが、1のまま。。。 14 ListBox1.Items.Add("test" + count); 15 16 } 17 }

C# 〇〇.aspx

1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 2 3<!DOCTYPE html> 4 5<html xmlns="http://www.w3.org/1999/xhtml"> 6<head runat="server"> 7<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 8 <title></title> 9</head> 10<body> 11 12 <form id="form1" runat="server"> 13 <br /> 14 <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 15 <br /> 16 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 17 <br /> 18 <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button"/> 19 <br /> 20 </form> 21 22</body> 23</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ボタンをクリックするごとに、数字を増やすには、どうすれば良いか教えてください

ViewState を使ってください。

Web アプリはステートレスという言葉を聞いたことがないですか?(分からなければググって調べて下さい)

投稿2020/06/03 13:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ListBox1.Items.Add("test" + count);

ListBoxになってますよ
ラベルなら、
Label1.Text="test"+count;
ですねー

投稿2020/06/03 12:10

y_waiwai

総合スコア88024

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kkgw

2020/06/03 12:30

すいません、質問間違えました。 リストボックスに追加される値を、1つずつ増やしたかったんですが、 どのようにすれば、良いでしょうか?
y_waiwai

2020/06/03 12:32

なら元のコードのままでいいですが、 それではどういう動作になるんでしょう
kkgw

2020/06/03 12:37

このコードだと、 数字がインクリメントされずに、 test1がクリックされるごとに、毎回追加されてしまっております。 test1 test2 test3 test4 test5 となるようにしたいのですが、 現状は、 test1 test1 test1 test1 となってしまいます。
y_waiwai

2020/06/03 12:40

ListBox1.Items.Add("test" + count); の場所にブレークポイントを設定して、クリックごとにcountのナカミがどうなってるのか見ていけばどうでしょう
kkgw

2020/06/03 12:43

ありがとうございます。 ブレークポイント見てみましたが、クリックする毎に、1になってしまうようです。webアプリなので?か分からないですが、毎回、初期化されてしまっているようです。
y_waiwai

2020/06/03 12:45

ブレークポイントで class直下のcount変数を見てみては
退会済みユーザー

退会済みユーザー

2020/06/03 12:57

ASP.NET の話ですよ。
kkgw

2020/06/03 12:58

ご指摘、様々、ありがとうございました。 ラベルの初期値を0にする、下記のコードで、実現できました。 //------------------------------------------------------------------ public partial class WebForm1 : System.Web.UI.Page { int count = 0; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { count = int.Parse(Label1.Text); count = count + 1; Label1.Text = count.ToString(); ListBox1.Items.Add("test" + count); } } //------------------------------------------------------------------ //------------------------------------------------------------------ <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <br /> <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> <br /> <asp:Label ID="Label1" runat="server" Text="0"></asp:Label> <br /> <asp:Button ID="Button1" OnClick="Button1_Click" runat="server" Text="Button"/> <br /> </form> </body> </html> //------------------------------------------------------------------
退会済みユーザー

退会済みユーザー

2020/06/03 13:12

ボタンクリックのたび 1 づつ count を増やしたいのですよね? であれば、それは間違ってると思いますけど。
len_souko

2020/06/04 10:03

> count = int.Parse(Label1.Text); > count = count + 1; > Label1.Text = count.ToString(); 確かに動くのは動くけど、表に出さない情報をラベルで全部置くってのは悪い作りなのでやるべきではないです もしも入力したパスワードなりなんなりだった場合はどうします? hiddenに置けば見えない?いいえ、ソースの表示で見れます それに画面に不要な情報を表示すること自体が邪魔です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問