いつもお世話になります。

開発環境:asp.net(VB)

WebフォームにWebユーザーコントロールを貼り付けしています。
Webユーザーコントロールにはラジオボタンが4つあります。
ラジオボタンの選択によって、ラベルに入る文字が変わるようにしたいです。

javascriptで製造したいと思っていますが、(1)の「document.userfotm1.elements["lbl" + i].value = "test1";」で、
「Microsoft JScript 実行時エラー:' document.userfotm1.elementsは Null またはオブジェクトではありません。」と表示されてしまいます。
どなたかご教示いただけますでしょうか。

(1)javascript
※ 「userfotm1」…Webユーザーコントロール全体選択したときのプロパティ値「ID名」を入力しています。(form名を入れるのが正しいようですが、Webユーザーコントロールではどれににあてはまるのか分かりません・・・。)

function ChangeLabel(obj) {
var maxCnt = 4;
if (obj.id == "RadioButton1") {
for (i = 1; i <= maxCnt; i++) {
document.userfotm1.elements["lbl" + i].value = "test1";
}
} else {
for (i = 1; i <= maxCnt; i++) {
document.userfotm1.elements["lbl"+ i].value = "test2";
}
}
}


(2)定義 以下を4つ定義しています
<asp:TableCell CssClass="TdData"><asp:Label ID="lbl1" runat="server" 
Text="TESTA"></asp:Label></asp:TableCell>
<asp:TableCell CssClass="TdData"><asp:Label ID="lbl2" runat="server" 
Text="TESTB"></asp:Label></asp:TableCell>
<asp:TableCell CssClass="TdData"><asp:Label ID="lbl3" runat="server" 
Text="TESTC"></asp:Label></asp:TableCell>
<asp:TableCell CssClass="TdData"><asp:Label ID="lbl4" runat="server" 
Text="TESTD"></asp:Label></asp:TableCell>



(3)Webユーザーコントロール
.RadioButton1.Attributes.Add("onclick", "ChangeLabel(this)")
.RadioButton2.Attributes.Add("onclick", "ChangeLabel(this)")
.RadioButton3.Attributes.Add("onclick", "ChangeLabel(this)")
.RadioButton4.Attributes.Add("onclick", "ChangeLabel(this)")

よろしくおねがいします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

getElementById(id)



idはクライアントサイドのIDを指定する
    • good
    • 0
この回答へのお礼

ありがとうございます。
IDで解決しました。

お礼日時:2011/04/15 11:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjavascriptでlabelの値取得

vs2012(c#)で

<asp:Label ID="test" runat="server" Text="abc" Visible="true"></asp:Label>

の値をjavascriptで取得したいのですが、下記で実行すると
l1はnullになり取得できません。

var l1 = document.getElementById("test");
var data = l1.innerText;
console.log(data);

そのようにすれば取得できるでしょうか

Aベストアンサー

VS2012なら、ASP.NET4ですね。

ならば、"ClientIdMode" でIDを固定すればいい。
マスタページや他のコンテナ・コントロールを使っている場合は、IDが衝突しないよう注意。

<asp:Label ID="test" runat="server" Text="abc" Visible="true" ClientIdMode="Static" />

でID名が固定されます。

<script type="text/javascript">
var l1 = document.getElementById("test");
var data = l1.innerText;
console.log(data);
</script>

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QASP.Net ラベルの内容をすぐに更新したい

大変お世話になっております。
昨年は大変お世話になり、多大なご教授をいただきました。
本年も何卒よろしくお願いいたします。

前々からお聞きしようと思っていたのですが、
処理によってラベルの内容がすぐに反映しないのですが
どのようにすればすぐに反映するのでしょうか?

例えば下記のような場合は、ラベルの内容を初期化したいのですが、
それがされるのは、ボタンの処理後になります。
ボタン処理の前にラベルを更新するにはどうすればいいのでしょうか?

もしかしたら 大変初歩的な質問かもしれませんが、
何卒よろしくお願いいたします。

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles RecDateButton.Click

  Me.Label1.Text = ""

  ここからボタンの処理が開始します

End Sub

Aベストアンサー

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "document.getElementById('" + Label1.ClientID + "').innerText = ''";
}

サーバー側イベントとクライアント側イベントは別物だといことを理解するべし。

ユーザーがボタンをクリック
→ボタンのクライアントイベント(onclick)
→formのsubmit
→ブラウザがPOST
→ASP.NETがポストバックを受け取る
→Page_Loadやらいろいろ
→ボタンのサーバーイベント(Click)
→Renderやらいろいろ
→ブラウザにHTMLを返す
→ブラウザ側の表示

クライアント側で、ボタンがクリックされた瞬間に行う。
具体的には、クライアント側でボタンのonclickイベントで行う。

<input type="submit" onclick="document.getElementById('Label1').innerText = ''">

サーバーコントロールにクライアントイベント記述用のOnClientClickプロパティがあるので、そこに書く。
ポストバック時では遅いので、一回目のリクエストのときにonclickイベント付のボタンをブラウザに返す。

protected void Page_Load(object sender, EventArgs e)
{
Button1.OnClientClick = "docu...続きを読む

QASP.NETでのメッセージ画面を出すには

はじめまして。
ASP.NET(C#)で、開発をしています。
例えば、内部である処理が終わった後に「完了!」みたいなメッセージ画面をポップアップさせたいと思っております。いろいろ調べてはいるんですが、方法がわかりません。JSを使わなければならないのかなとは思いますが、具体的な方法がわかりません。
よい方法がありましたら、教えていただけないでしょうか。よろしくお願いいたします。

Aベストアンサー

確認は取れていませんが、多分以下のHPの内容でいけると思いますが…。
参考に如何でしょうか。

・ASP.NETでメッセージボックス(OK・NO)の処理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5952&forum=7&6

・Webアプリでメッセージボックスを使いたい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1644&forum=7&7

QjavascriptでASPにデータを渡す

javascript,ASPの初心者です。
現在親画面にあるデータを子画面にて使用したいと思っています。
親画面の、データをjavascriptのonclickを使用して関数に渡すところまでは出来ています。その関数内でwindow.open()をコールし子画面を呼び、Page_Load()内でデータを使用したいと思っているのですが、定義?の方法が分かりません。分かりづらい説明ですみませんが、よろしくお願いいたします。

Aベストアンサー

ぉぉぅ。。。自分と同じような境遇の人がww

自分も、JavaScript、ASPの勉強を始めたばかりの初心者っすww
初心者同士、よろしく~ ̄▽ ̄


んーと。。。
その関数を渡せればいいわけっすね。。。???




<Script language ="JavaScript">
function Go_child(send){
document.form.sendchild.value = send;
win_style = "";(ウインドウの構成要素(ツールバーの有無とか。
win_name = " ";(ウインドウの名前?
window.open("child.asp",win_name,win_style);
}
</script>
<body>
<%
ASPの構文~。

a = ~~~ ←aを子画面に。と過程。
%>
<form name ="form">

<input type ="button" name = "button1" onClick="Go_child(<% =a%>)">
<input type ="hidden" name ="sendchild" value ="">
</form>
</body>




<Script language ="JavaScript">
function getsend(){//JavaScriptで持ってくる場合。?
document.form2.text2.value = opener.document.form1.text1.value;
}
</script>
<body onLoad="getsend()">
<%'ASPで持ってくる場合。?
Dim bbb
bbb = Request.Form("sendchild")
%>
<form name ="form2">
<input type ="text" name ="text2">
<input type ="text" name ="text3" value ="<% =bbb%>">

</form>
</body>


JavaScriptでもASPでも受け取れるかな?
動作は確認してませんけど。。。
こんな感じでいいのかな?と思います(汗

ぉぉぅ。。。自分と同じような境遇の人がww

自分も、JavaScript、ASPの勉強を始めたばかりの初心者っすww
初心者同士、よろしく~ ̄▽ ̄


んーと。。。
その関数を渡せればいいわけっすね。。。???




<Script language ="JavaScript">
function Go_child(send){
document.form.sendchild.value = send;
win_style = "";(ウインドウの構成要素(ツールバーの有無とか。
win_name = " ";(ウインドウの名前?
window.open("child.asp",win_name,win_style);
}
</script>
<body>
...続きを読む

Qvb.netで画面のコントロールId名を変数で動的に制御し処理する方法

以下のような処理がしたいです。
実現方法をご存知でしたらご教授下さい。

画面のコントロールText1~Text3があります。
For~Nextでこのコントロールに値をセットしたいです。

For i = 1 To 3
  Texti.Text = i
  ※このiのTextの後ろのiの部分を1~3と動的に変更し、各Textに値を設定したいです。
Next

Aベストアンサー

こんにちは、webでは、findcontrolを使うみたいです。

いかに、参考URLから、引用すると
***********************************
Dim L, U, i As Integer
Dim tx As System.Web.UI.WebControls.TextBox
L = LBound(dat)
U = UBound(dat)
For i = L To U
'コントロール名を探し出す
tx = FindControl("TextBox" & CStr(i))
'見つかったコントロールのTextプロパティに代入
tx.Text = dat(i)
Next

******************引用終わり*******
このようにすると良いみたいです。
asp findcontrolで、検索すると、
結構ヒットするみたいです。

参考URL:http://natchan-develop.seesaa.net/

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QASP.NETでの縦・横スクロール

ヘッダーだけ別テーブルで記述し、DataGridを入れるDIVと全体を入れるDIVの二つで縦横スクロールを行っていますが、縦スクロールバーが
横スクロールしないと表示されない現象が発生しています。
これを横スクロールしないで常に縦スクロールバーが表示される方法はないものですか?

開発環境:VS2005

Aベストアンサー

縦スクロールのみなら質問者さんの手法でヘッダーと一覧部を別テーブルに作成、
一覧部分のみDIVに入れてkero_mioさんの「横スクロールバーのみを表示」パターンでやっていました。
たぶんExcelみたいにヘッダーを常に表示して一覧を縦横スクロールしていのですよね。
ややこしいですが出来る可能性はあります。
ソース的には参考URLの通り。
ただし補足説明の通り「互換モード」でないと動かないし、
css内のexpressionは確かIE5以上からのみなので利用ブラウザに制限がかかります。

参考URL:http://jsajax.com/CSSFixedHeaderColumnsArticle426.aspx,http://materia.useyan.jp/html/expression/issues.html

QGridviewとDataGridviewの違い

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(DataGridView1をGridView1にしてみたり、
DataGridView1をMe.DataGridView1にしてみたりしています)
すべてエラーになってしまいます。

だったらDataGridViewを設置したいと思うのですが
ツールバー内にDataGridViewはあるものの
色が薄くなっていて(グレーアウトみたいな感じです)選択できない状態です。

GridViewで、DataGridViewのコードを参考にして
少し書き換えれば動くようなことはないのでしょうか?
または
DataGridViewが使える方法を教えてください!

ご教授お願いいたします!

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(...続きを読む

Aベストアンサー

> DataGridViewとGridViewの違いは
> やっとのことでなんとなく分かったのですが

いや、この書き込みをみる限りではわかってないと思いますよ。

DataGridView:
 Windowsアプリケーション用のGridコントロール。
 Webでは使えません。

GridView:
 Webアプリケーション用のGridコントロール。
 Webなので、最終的にはHTMLに変換されます。

この一番基本的な違いがわかってないと思います。

> 自分のやりたいことをネットで検索してコードを探すと
> そのほとんどがDataGridViewを使用したものです。

Webアプリケーションの場合、すべてHTMLに変換されますから、
システムの動作はHTMLをベースに考える必要があります。
やりたいことを考えるうえで、HTMLだとどう動かせばよいか、
というところから学習するのがよいかと思います。

QonClickで関数呼出し後に、結果に応じてsubmitを実行する方法

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しません・・・
onClick部分にonClick="return func(),submit();"と記述した場合、
func関数の実行結果がtrueでもfalseでも遷移してしまいます。
そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、
func関数がtrueの時のみうまく遷移するようになりました。

これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか?
正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば
教えていただけないでしょうか?

※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと
考えております。

JavaScriptで、
function func() {
 if (a==0) {
  alert("処理しない");
  return false;
 }
 return true;
}
と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。

そして、FORMタグで
<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();">
</FORM>
と記述しています。
要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに
遷移させたいのですが、上記記述では、遷移しませ...続きを読む

Aベストアンサー

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右式を結果とする演算子です。よって、funcメソッド、submitメソッド両方を評価するため、funcメソッドの戻り値に関係なく、submitされます。

3.&&で区切った場合、
論理演算子「&&」は、左右ともにtrue(0以外)の場合のみtrueとする演算子です。また、2項論理演算子は左式から評価し、左式だけで全体の結果がわかる場合、右式を評価しません。よって、funcメソッドがfalseを戻した場合、その時点でsubmitを評価しなくても演算結果は必ずfalseとなるのでそこで打ち切られ、trueを戻した場合、submitを評価しないと演算結果を得られないため、遷移したわけです。「&&」を「||(論理和)」に変更すると逆の結果得たと思います。

さて、では3の「&&」が正しいかと言われたら、文法上は正しいです。ただし、他人がみてわかるとは思えません。
そこで、以下の記述はいかがでしょう。読んでみてソースを理解できますか。


<FORM NAME="FormName" ACTION="next.html">
<INPUT TYPE="button" VALUE="next" NAME="button1" onClick="func()">
</FORM>

(中略)

// funcの定義
function func() {
 if (a==0) {
  alert("処理しない");
  return ;
 }
 document.FormName.submit();
}

要は、ボタンを押されたら、funcを呼び出せ。
funcでは、aが0ならば、そこで終了しろ。
そうでなければ、documentオブジェクト内のFormNameと言う名前のオブジェクトのsubmitメソッドを呼べ。
です。

3つのパターンをみる限り、理由は以下の通りと思います。
1.セミコロン(;)で区切った場合、
この場合、「return func();」と「submit();」とは別の文です。returnはその時点の値を戻して、それ以降の動作を打ち切ってしまいます。よって、onClickイベントはfuncメソッドの戻り値(true/false関係なく)を戻して、そこで終了、それ以降のsubmitは実行しないとなります。

2.カンマ(,)で区切った場合、
この場合、「return func(),submit();」が1つの文となります。この「,」は、左右の式を評価して、右...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報