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

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

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

Re[11]: ASP.NETのHTMLのラベルに入れた値を使用する方法


(過去ログ 12 を表示中)

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

■2964 / inTopicNo.1)  ASP.NETのHTMLのラベルに入れた値を使用する方法
  
□投稿者/ 東山 (1回)-(2007/04/19(Thu) 19:32:53)

分類:[VB.NET (ASP.NET)] 

おつかれさまです。
環境:ASP.NET (2003バージョン) OS:Win2000

ASP.NETのHTMLでの質問です。
HTMLで書いたラベルにDataListで紐付けた値を入れています。
そのラベルの値を使用して、IF文であるボタンを表示・非表示の操作をしたいのですが、
ラベルから値を取り出すことが出来ません。
初歩的な質問でしょうか、ネットで調べまわっても、探しきれませんでした。
ご教授下さい。
下記はHTML("は、HTMLの文をそのまま書くと危ないかなと思って、入れました。実際はないです)
"<asp:Label id=user_name runat="server" ForeColor="#404040" Font-Names="MS ゴシック""
"Font-Size="X-Small" Text='<%# DataBinder.Eval(Container.DataItem,"user_name") %>'>"
"</asp:Label>"
↑のラベルの値を↓の●に使いたいです
"<%if UserText.text = "あ" then%>"
  ボタン表示
"<% elseif UserText.text <> "1" and UserText.text = ● %>"
  ボタン非表示
"<% end if %>"


引用返信 編集キー/
■2967 / inTopicNo.2)  Re[1]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 刈歩 菜良 (62回)-(2007/04/19(Thu) 21:24:29)
刈歩 菜良 さんの Web サイト
user_name.Textぢゃだめなのかな?
引用返信 編集キー/
■2973 / inTopicNo.3)  Re[2]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 東山 (3回)-(2007/04/20(Fri) 09:03:54)
No2967 (刈歩 菜良 さん) に返信
> user_name.Textぢゃだめなのかな?

コンパイラ エラー メッセージ: BC30451: 名前 'user_id' は宣言されていません。
により、うまく行きません。

引用返信 編集キー/
■2974 / inTopicNo.4)  Re[3]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 東山 (4回)-(2007/04/20(Fri) 09:05:00)


'user_id' →'user_name' の書き間違いです。
引用返信 編集キー/
■2975 / inTopicNo.5)  Re[4]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ ぼのぼの (34回)-(2007/04/20(Fri) 09:42:17)
2003バージョンの場合、
aspx.vbの" Web フォーム デザイナで生成されたコード "のRegion内に、

Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

みたいな宣言文が必要です。
デザイナで配置したコントロールに対してはこのコードは自動生成されますが、
aspxを直接編集した場合、自動生成されないことがあります。
一度デザイナ表示に切り替えると自動生成されることもあります。
手動でこのコードを追加してビルドしなおしてもOKです。


ところで、ボタンの表示・非表示の切り替え方法が、レガシASPやJSPに近い書き方ですね。
別に悪いことではないと思うんですが、ASP.NETだとサーバコントロールのボタンの
Visibleプロパティを切り替える方法の方が一般的かもしれません。
引用返信 編集キー/
■2976 / inTopicNo.6)  Re[5]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 東山 (5回)-(2007/04/20(Fri) 10:23:51)
No2975 (ぼのぼの さん) に返信
問題は解決してませんが、ありがとうございます。
ぼのぼのさんのおかげで、問題点がより深く究明できました。

現行は
Protected WithEvents DemandDataList As System.Web.UI.WebControls.DataList
上記のDataListにDBから引っぱてきた値をいれて、
htmlで書いたid = user_name にText='<%# DataBinder.Eval(Container.DataItem,"user_name") %>
で表示させています。
データ3あったら、ボタンもuser_textも3つ表示し、2つあったら2つ表示してます。
それを、user_nameの値により、制御したいです。

言われたやり方をやりまいしが、エラーになりました。
例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
ソースエラー
<%if user_name.text= "あ" )then%>





引用返信 編集キー/
■2979 / inTopicNo.7)  Re[6]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 東山 (6回)-(2007/04/20(Fri) 11:17:58)
やりたい事と質問の内容が、あまりにも違うとわかったので、
一旦締めます。

解決済み
引用返信 編集キー/
■2981 / inTopicNo.8)  Re[7]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ ぼのぼの (35回)-(2007/04/20(Fri) 11:26:28)
あうち ⊂(_ _⊂⌒`つ==
締められてしまった…

でもせっかく書いたので貼っておきますね。

DataList内に配置したコントロールは直接コードビハインドのクラスのメンバにはなりません。
ItemDataBoundイベントのハンドラ内でFindControlメソッドを使って取得します。
こんなかんじ。

[WebForm1.aspx]
<form id="Form1" method="post" runat="server">
    <asp:DataList id="DataList1" runat="server" GridLines="Horizontal">
        <ItemTemplate>
            <asp:Label id="Label1" runat="server" Text="<%#Container.DataItem%>"></asp:Label>
            <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
        </ItemTemplate>
    </asp:DataList>
</form>

[WebForm1.aspx.vb]
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim list As New ArrayList
    list.Add("あ")
    list.Add("い")
    list.Add("う")
    DataList1.DataSource = list
    DataList1.DataBind()
End Sub

Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
    If DirectCast(e.Item.FindControl("Label1"), Label).Text = "い" Then
        DirectCast(e.Item.FindControl("Button1"), Button).Visible = False
    Else
        DirectCast(e.Item.FindControl("Button1"), Button).Visible = True
    End If
End Sub

解決済み
引用返信 編集キー/
■3064 / inTopicNo.9)  Re[8]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 刈歩 菜良 (64回)-(2007/04/22(Sun) 15:55:36)
刈歩 菜良 さんの Web サイト
蛇足ですが...

> DataList内に配置したコントロールは直接コードビハインドのクラスのメンバにはなりません。

東山さんはどうもコードビハインドされてないような気が。

> ItemDataBoundイベントのハンドラ内でFindControlメソッドを使って取得します。
> こんなかんじ。

でも、これは正しいです。
同じことをaspx内の<%〜%>内でやればOKですね。
解決済み
引用返信 編集キー/
■3082 / inTopicNo.10)  Re[9]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ ぼのぼの (40回)-(2007/04/23(Mon) 12:39:26)
No3064 (刈歩 菜良 さん) に返信

既に解決済みのスレッドをあまり伸ばすのは本意ではないのですが、
どうしても気になったので一点だけ確認させてください。

>>DataList内に配置したコントロールは直接コードビハインドのクラスのメンバにはなりません。
>
> 東山さんはどうもコードビハインドされてないような気が。

ASP.NET (2003バージョン)で、「コードビハインドしない」って可能なんでしょうか?
2003バージョンではサーバサイドのコードは実行時コンパイルではないという認識でしたので、

>>ItemDataBoundイベントのハンドラ内でFindControlメソッドを使って取得します。
>>こんなかんじ。
>
> でも、これは正しいです。
> 同じことをaspx内の<%〜%>内でやればOKですね。

これの具体的な書き方がちょっと想像できなかったのですが…
解決済み
引用返信 編集キー/
■3092 / inTopicNo.11)  Re[10]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ 刈歩 菜良 (65回)-(2007/04/23(Mon) 16:35:46)
刈歩 菜良 さんの Web サイト
> ASP.NET (2003バージョン)で、「コードビハインドしない」って可能なんでしょうか?
> 2003バージョンではサーバサイドのコードは実行時コンパイルではないという認識でしたので、

2002の頃から可能ですよ。
# MSDNライブラリの多くのサンプルコードが単一ファイル形式です。

コードがaspxファイルに埋め込まれるだけなので、aspx.vbが事前コンパイルかどうかは関係ないです。

> 2003バージョンではサーバサイドのコードは実行時コンパイルではない
余談になりますが、デフォルトではそうですが、実行時コンパイルも設定可能です。
が、しつこいようですが、これとコードビハインドか単一ファイルかは関係ないです。

>>同じことをaspx内の<%〜%>内でやればOKですね。
>
> これの具体的な書き方がちょっと想像できなかったのですが…
Visual Studio 2005と変わらないと思いますよ(ごめんなさい。2003の環境がないので)。
単にコードビハインド側にあるべきクラス定義なんかがaspxファイルの中にあるだけです。
# ぃゃ、細かいところは違うとこも、たとえば、Importsは@Importディレクティブでやんなきゃいけないとか。

一度Visual Studio 2005でaspxファイルを追加するときに「別のファイルにコードを書き込む」のチェックを外して作って見られてはいかがですか?
解決済み
引用返信 編集キー/
■3100 / inTopicNo.12)  Re[11]: ASP.NETのHTMLのラベルに入れた値を使用する方法
□投稿者/ ぼのぼの (41回)-(2007/04/23(Mon) 17:08:46)
No3092 (刈歩 菜良 さん) に返信
>>ASP.NET (2003バージョン)で、「コードビハインドしない」って可能なんでしょうか?
>>2003バージョンではサーバサイドのコードは実行時コンパイルではないという認識でしたので、
>
> 2002の頃から可能ですよ。
> # MSDNライブラリの多くのサンプルコードが単一ファイル形式です。
>
> コードがaspxファイルに埋め込まれるだけなので、aspx.vbが事前コンパイルかどうかは関係ないです。
>
>>2003バージョンではサーバサイドのコードは実行時コンパイルではない
> 余談になりますが、デフォルトではそうですが、実行時コンパイルも設定可能です。
> が、しつこいようですが、これとコードビハインドか単一ファイルかは関係ないです。

をを!そうだったのですか。勉強になります。m(_ _)m
2003は、aspx.vb⇒事前コンパイルされてdllとなり、binの下へ
aspx⇒実行時コンパイル
というスタイルでしか開発したことなかったので、
aspxに全て書いてサーバサイドコードのみ事前コンパイル、というのは
未だにイメージが掴めないのが正直なところですが。
これは実際試してみるのが一番手っ取り早いと思うので、
時間に余裕のあるときに試してみます。

> >>同じことをaspx内の<%〜%>内でやればOKですね。
>>
>>これの具体的な書き方がちょっと想像できなかったのですが…
> Visual Studio 2005と変わらないと思いますよ(ごめんなさい。2003の環境がないので)。
> 単にコードビハインド側にあるべきクラス定義なんかがaspxファイルの中にあるだけです。
> # ぃゃ、細かいところは違うとこも、たとえば、Importsは@Importディレクティブでやんなきゃいけないとか。
>
> 一度Visual Studio 2005でaspxファイルを追加するときに「別のファイルにコードを書き込む」のチェックを外して作って見られてはいかがですか?

いや、2005ではチェックを外すのも外さないのも両方やったことあるんですが、
2003と2005のサーバサイドコードって大分違うというのが正直な所感です。
2005ではクラスがPartialになっててメンバの宣言とかどこにもないのに対し、
2003ではRegionに隠れてるだけでメンバの宣言とかInitializeComponentの呼び出しとか
全部aspx.vb内に目に見える形で書いてありますから。

なので私的には2005と変わらないってイメージではないんですが、
2003の環境自体はあるので、時間のあるときに試してみることにします。
#いつやるか未定なので、このスレへのフィードバックはしないかもしれませんが(^^;

ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -