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

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

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

Re[3]: ページによってボタンのテキストを変更する方法


(過去ログ 43 を表示中)

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

■22731 / inTopicNo.1)  ページによってボタンのテキストを変更する方法
  
□投稿者/ らんち。 (1回)-(2008/07/30(Wed) 22:08:12)

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

2008/08/05(Tue) 17:45:52 編集(投稿者)

開発環境OS:Windows XP/IIS最新の物(バージョン忘れました・・・。)
開発環境:VisualStudio2005
使用言語:ASP.NETとC#とHTML


初めまして、いつも参考にさせて頂いてます。らんちと申します。
今、業務でとあるサイトを作っているのですが、
ascxファイルで作られたボタンを色んな別のaspxファイルで読み込んで使用しているのですが、
ページ毎にascxで設定したボタンのテキストを変えたいのですが、どのようなコードを書けばよいのか
判らず困っています。


コード自体を書く場所は、ascx.cs(ボタンのある場所)にpublicでメソッドを作るのは大体予測は
出来ているのですが、下記のような例の場合は、どのようにすればよいのか判らず困っています。

【例】
<デフォルトのボタン>
「選択」と書かれたボタン

<編集ページで読み込まれた場合>
「選択」と書かれていたボタン → 「登録」と名前が変わってボタンが表示される


お手数ですが、誰かご教授お願い致します。


引用返信 編集キー/
■22736 / inTopicNo.2)  Re[1]: ページによってボタンのテキストを変更する方法
□投稿者/ ま (91回)-(2008/07/31(Thu) 02:16:53)
No22731 (らんち。 さん) に返信

Button1.Text = "選択";

ってやるだけじゃないの?

引用返信 編集キー/
■22740 / inTopicNo.3)  Re[2]: ページによってボタンのテキストを変更する方法
□投稿者/ らんち (1回)-(2008/07/31(Thu) 09:17:06)
No22736 (ま さん) に返信
>
> Button1.Text = "選択";
>
> ってやるだけじゃないの?
>

返信有難うございます。
しかし、その記述の仕方は理解しています。
私の説明の下手さが問題ですね。申し訳ありません。

質問内容としては、「ページによってボタンのテキストを変える」という事です。
つまりif文で「どのページか」判断させる記述の仕方が分からないのと、publicでメソッドを記述する際にpublicの後をどう続けて
書くのかが分からないという事です。

もう一度例を書きますと、


<編集ページ(henshu.aspx)のページでボタンを(button-list.ascx)読み込んだ場合>
ID:btnselectのボタンは、「選択」ボタンではなく、
「登録」ボタンというテキストに変える。


<引用ページ(inyo.aspx)のページでボタンを(button-list.ascx)を読み込んだ場合>
ID:btnselectのボタンは、「選択」ボタンではなく、
「引用登録」ボタンというテキストに変える。

という事です。
引用返信 編集キー/
■22741 / inTopicNo.4)  Re[3]: ページによってボタンのテキストを変更する方法
□投稿者/ ま (92回)-(2008/07/31(Thu) 09:29:43)
2008/07/31(Thu) 09:39:40 編集(投稿者)
No22740 (らんち さん) に返信
> 質問内容としては、「ページによってボタンのテキストを変える」という事です。
> つまりif文で「どのページか」判断させる記述の仕方が分からないのと、publicでメソッドを記述する際にpublicの後をどう続けて

フォームに hidden 要素配置して、画面ID をプリセットしておいて
その値を見てどーこーすればいいんじゃないかな?

呼び出し順序は?
カスタムコンポーネントを貼り付けている画面のPage_Load
が先に呼ばれるならば、
   request.Attribute("BUTTON_TEXT") = "選択"
とか出来そうですね。

最悪は、JavaScript で
document.getElementById("<%= CustomCompo1.Button1.ClientID %>").value = "選択";
とかやってあげるとか。コンポーネント配置の直後に記述して
あげればよいです。


引用返信 編集キー/
■22742 / inTopicNo.5)  Re[1]: ページによってボタンのテキストを変更する方法
□投稿者/ いしだ (159回)-(2008/07/31(Thu) 10:16:36)
2008/07/31(Thu) 16:58:09 編集(投稿者)
以下の手順でいけるんじゃないでしょうか。

1.ascx.csでプロパティを設定

private string btnText;
public string BtnText
{
    get { return btnText; }
    set { btnText = value; }
}
 
2.ascx.csのPage_Loadでボタンに値を設定

if (!IsPostBack)
{
    Button1.Text = btnText;
}

3.それぞれのページで値を設定

VSのプロパティウィンドウからBtnTextに値を設定

又は、

Page_Loadで、コントロールに値を設定
if (!IsPostBack)
{
    WebUserControl1.BtnText = "編集";
}


[編集]
色々編集しました。。。

引用返信 編集キー/
■22776 / inTopicNo.6)  Re[2]: ページによってボタンのテキストを変更する方法
□投稿者/ Jitta on the way (147回)-(2008/07/31(Thu) 19:52:56)
No22742 (いしだ さん) に返信

!IsPostBack の判定は、しなくてもいいと思います。
あるいは、.aspx ファイルの方で、属性として指定してもいいと思います。(詳しい方法は忘れた)
引用返信 編集キー/
■22778 / inTopicNo.7)  Re[3]: ページによってボタンのテキストを変更する方法
□投稿者/ いしだ (161回)-(2008/07/31(Thu) 21:38:55)
2008/07/31(Thu) 21:40:41 編集(投稿者)

> !IsPostBack の判定は、しなくてもいいと思います。
そうですね。
してもしなくても結果は同じなんですが、この場合、判定した方が効率が
良いのかな、と思っていました。
!IsPostBack判定でいける時はそうした方が良いのかと思っていたので、
今まで作成してきたアプリも全部そのように実装してますが、どうなんで
しょうか?

> あるいは、.aspx ファイルの方で、属性として指定してもいいと思います。(詳しい方法は忘れた)
<uc1:WebUserControl ID="WebUserControl1" BtnText="編集" runat="server" />
のような感じで指定しますね。
「VSのプロパティウィンドウからBtnTextに値を設定」
というのがこれと同じ事ですね。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -