- PR -

ASP.NETでの動的に作成したコントロールのクライアントサイドスクリプトでの操作

1
投稿者投稿内容
eseses
会議室デビュー日: 2008/07/09
投稿数: 2
投稿日時: 2008-07-09 19:00
いつもお世話になっています。
ASP.NETでPage_Initで動的に作成したコントロールの操作をクライアントサイド・スクリプトで行いたいのですが方法がわかりません。
参考になるサイトなどありましたら御教授ください。

具体的にはDragPanelコントロールの位置情報を取得、設定したいと考えております。

静的に配置したDragPanelコントロールでは以下のコードで上手くいったのですが。

function getDropPosition(){
var currentPosition = $common.getLocation($get("<%=Panel1.ClientID%>"));
alert("x:"+currentPosition.x +"y:"+currentPosition.y);
}

以上 よろしくお願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2008-07-09 19:56
<%=Panel1.ClientID%> の部分をLiteralコントロールにでもしておいて、動的に生成したDragPanelのClientIDをそのLiteralコントロールに埋めこめばよいんじゃないでしょうか。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-07-10 06:54
引用:

function getDropPosition(){
var currentPosition = $common.getLocation($get("<%=Panel1.ClientID%>"));
alert("x:"+currentPosition.x +"y:"+currentPosition.y);
}


<%=Panel1.ClientID%>を使用すると、JavaScriptを外部ファイルに格納することが
できませんのであまりお勧めできません。

たとえば、Panel1コントールに独自の属性(ClientSelector="xxx")を追加して
jQueryでこの属性を検索するとか。この場合、JavaScritは外部ファイルに格納することができます。

例:
var myValue = document.getElementById('<%= myTextBox.ClientID %>');

var myTextBox = $("input[@ClientSelector=myTextBox]");

<asp:TextBox ID="myTextBox" runat="server" ClientSelector="myTextBox" />

具体的な方法は、こちらを参照してください。
http://blog.spontaneouspublicity.com/2007/08/20/using-jquery-to-make-aspnet-play-nice-with-aspnet/

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
eseses
会議室デビュー日: 2008/07/09
投稿数: 2
投稿日時: 2008-07-10 18:39
どっとねっとふぁんさん、Accessさん、ありがとうございます。

やっとできました。
//Literalはテキストボックスより下に配置しないとエラーが起きるみたいです。
//このせいで数時間無駄にしちゃいました。

//パネルpn1とテキストボックスtbx1は動的に作ったコントロール
StringBuilder sb = new StringBuilder();
sb.Append("var currentposition =$common.getLocation($get(");
sb.Append('"');
sb.Append("ctl00_ContentPlaceHolder1_pn1");
sb.Append('"');
sb.Append("));");
sb.Append("document.getElementById('");
sb.Append("ctl00$ContentPlaceHolder1$tbx1");
sb.Append("').value = ");
sb.Append("currentposition.x");
sb.Append(";");
Literal1.Text = "<script language='JavaScript'>" + sb.ToString() + "</script>";
1

スキルアップ/キャリアアップ(JOB@IT)