1.一般的に言えば、ASPXページのWebフォームコントロールにJavaScriptの特性を追加する場合は、Attributes.Addを使用して達成できます。
たとえば、TextBox TXTの場合、できます。
txt.attributes.add( "onclick"、 "fcn0();");
次に、Webページ上にある場合、FCN0 JavaScript関数が呼び出されます。
1.1は、IDEが認識できない属性の分析です。
たとえば、RadioButton RBTの場合、IDEはOnClickの属性、上記のステートメントを認識できません。
rbt.attributes.add( "onclick"、 "fcn1(this);");
.NETフレームワーク1.1
<入力タイプ= Radio ID = RBT> ...
.NETフレームワーク1.0
<span> <入力タイプ=ラジオID = rbt> ... </span>
FCN1では、パラメーターに対応するオブジェクトが異なることに注意してください。これはわずかな違いです。
2。HTMLコントロールの場合、さらに多くのことをする必要があります。
ASPXページを設計する場合、たとえばツールバーからWebフォームコントロールをドラッグします。ページへのテキストボックスが発生します。
1。ASPXページその他の文
<asp:textbox id = "textbox1" runat = "server"> </asp:textbox>
第二に、背後にコード
保護されたSystem.Web.ui.WebControls.TextBox TextBox1;
HTMLコントロールの場合、最初の文では、Runat = "Server"が表示されず、2番目のゲームは自動的に追加されません。
したがって、HTMLコントロールにアクセスしたい場合は、
1。runat = "server"属性をASPXページのステートメントに追加します。
<入力型= "テキスト" size = "9" id = "htxt" runat = "server">
第二に、コードに表示される宣言
保護されたSystem.web.ui.htmlcontrols.htmlinputtext;
最初の文のIDは、2番目の文の変数名と同じであることに注意してください。
2.1 、注意到、System.web.ui.webcontrols.textbox对应的HTMLコントロール是システム.web.ui.htmlcontrols.htmlinputtext、对应的html
それに応じて、HTMLタグ<Body>の対応するHTMLコントロールは
public System.web.ui.htmlcontrols.htmlgnericControl mybody;
2.2 1つの例外は、HTMLの<フォーム>タグに対応するOnSubmitインシデントに関するインシデントです。このようなASPXページを見てください
<%@ page言語= "c#" codebehind = "webform2.aspx.cs" autoeventwareup = "false" ensulets = "testcs.webform2"%>
<
<html>
<head>
<title> webform2 </title>
<Meta name = "general" content = "Microsoft Visual Studio 7.0">
<Meta name = "code_language" content = "c#">
<Meta name = "vs_defaultclientscript" content = "javascript">
<Meta name = "vs_targetschema" content = "http://schemas.microsoft.com/intellisense/ie5">
<スクリプト言語= "javascript">
関数fcn1()
{{
PROMPT( "hi"、 "fcn1");
}
</script>
</head>
<body ms_positioning = "gridlayout">
<form id = "webform2" method = "post" runat = "server" onsubmit = "fcn1();">
<asp:button id = "button1" runat = "server" text = "button"> </asp:button>
<ASP:DropDownList ID = "DropDownList1" runat = "server" autopostback = "true" >>
<asp:listitem value = "a"> a </asp:listitem>
<asp:listitem value = "b"> b </asp:listitem>
<asp:listitem value = "c"> c </asp:listitem>
</asp:ドロップダウンリスト>
</form>
</body>
</html>
コンテンツは非常にシンプルです。JavaScript関数fcn1、ボタンButton1とAutopostback Dropdownlist Dropdownlist1を入れてください。 。
Microsoft Autopostback = TrueのWebControl実装Postback、原則は次のとおりです。
まず、このASPXページにautopostback = trueのWebControlがある場合、__dopostbackというJavaScript関数を書き込みます。
<スクリプト言語= "javascript">
<! -
function __dopostback(eventTarget、eventargument){
var theform;
if(window.navigator.appname.tologycase()。indexof( "netscape")> -1){{{{
theform = document.forms ["webform2"];
}
それ以外 {
theform = document.webform2;
}
theform eventTarget.value = eventTarget.split( "$")。
theform .__ eventArgument.value = eventArgument;
theform.submit();
}
//->
</script>
2。たとえば、上記のドロップダウンリストがレンダリングされます。
<select name = "dropdownlist1" onchange = "__dopostback( 'dropdownlist1'、 '')"言語= "javascript" id = "dropdownlist1">
<オプション値= "a"> a </option>
<オプション値= "b"> b </option>
<オプション値= "c"> c </option>
</select>
このようにして、form、form、theform.submitはフォームのonsubmitイベントをトリガーしないようにします。
これはMicrosoftのバグです。
解決策は、http://www.devhawk.net/art_submitfirefixup.ashxを使用して、このdllをプロジェクトの参照に追加します。以前の段落
<httpmodules>
<add type = "devhawk.web.submitfirefixupmodule、submitfirefixupmodule" name = "submitfirefixupmodule" /> /> />
</httpmodules>
それはいいです。
3。アプリケーション。
JavaScriptがブラウザにJavaScriptを使用して<elect>要素を変更した場合、対応するサーバー側のドロップダウンリストがこの更新を知ることができないという不満がよく聞こえます。
この状況は、「クラスフェデレーション」のドロップダウンリストに表示される場合があります。
上記のテクノロジーを使用して、私はそのような解決策を作成しました(ViewStateの方法に似ています):
最初に、長さ0のテキストボックスTXTWRAPを定義し、処理するためにATHOSOSW = "TRUE"などの属性を使用して処理するすべてのドロップダウンリストを追加します。
2。上記の2.2の内容を参照して、submitfirefixupModuleに参加して、形成されるOnSubmitイベントを確保します。
第三に、FormのOnSubmitイベントは、JavaSososonsubmitWrapを実行します。コードは次のとおりです。
関数fcnathosonsubmitwrap()
{{
txtwrap = document.all ["txtwrap"];
var i;
var strwrap = '';
for(i = 0; i <document.all.length; i ++)
{{
ctrl = document.all [i];
if(ctrl.tagname.touppercase()== 'select' && typeof(ctrl.athososw)!= '未定義')))
{{
if(ctrl.athososw.touppercase()== 'true')
{{
strwrap + = fcnathoswrapselect(ctrl) + '&&&;
}
}
}
if(strwrap.length> 3)
txtwrap.value = strwrap.substring(0、strwrap.length-3);
};
// Athososw
関数fcnathoswrapselect(ctrlselect)
{{
var i;
var strwrapselect = ctrlselect.id + '&' + ctrlselect.tagname;
var strvalue = '';
var strtext = '';
for(i = 0; i <ctrlselect.options.length; i ++)
{{
strvalue = ctrlselect.options [i]。
strtext = ctrlselect.options [i] .text;
strwrapselect + = '&&' + i + i + '&' + strvalue.replace(/&/g、 '%26') + '&' + strtext.replace(/&/g、 '%26');
};
strwrapselectを返します。
};
第四に、formのpage_loadはclscommon.unwrapcontrol(txtwrap.text)と呼ばれます。 Clscommonは私のツールクラスです。
静的な公共void大学
{{
Regex R3 = new Regex( "("( "("( "(&& &&)); //)ハイフンで分割。
Regex R2 = new Regex( "("( "("(&&)); //ハイフンで分割)。
Regex R1 = new Regex( "("(&)); //ハイフンで分割。
string [] sa3、sa2、sa1;
文字列S3、S2、S1;
int i3、i2、i1;
ストリングストリッド、strtagname;
System.web.ui.control ctrlunwrap;
ドロップダウンリストddlunwrap;
listitem liadd;
s3 = strunwrap;
SA3 = r3.split(S3);
for(i3 = 0; i3 <(sa3.length+1)/2; i3 ++)
{{
S2 = SA3 [i3*2];
if(s2.length> 0)
{{
SA2 = r2.split(s2);
if(sa2.length> 1)
{{
S1 = SA2 [0];
sa1 = r1.split(s1);
if(sa1.length == 3)
{{
strid = sa1 [0];
strtagname = sa1 [2];
ctrlunwrap = pgunwrap.findcontrol(strid);
if(ctrlunwrap!= null)
{{
if(strtagname == "select")
{{
ddlunwrap =(dropdownlist)ctrlunwrap;
ddlunwrap.items.clear();
for(i2 = 1; i2 <(sa2.length+1)/2; i2 ++)
{{
S1 = SA2 [I2*2];
sa1 = r1.split(s1);
liadd = new System.web.ui.webcontrols.listitem(sa1 [4]、sa1 [2]);
ddlunwrap.items.add(liadd);
}
}
}
}
}
}
}
}
Atossmth All rights reserved、示してください。