私はASPネットAjaxツールキットを使用しており、GridView内にありUpdatePanel、すべて正常に動作します。
生成する必要があるテーブルに対していくつかを実行しようとすると、返される DOM に(または table )JQueryの兆候はありません。これはすべて ASP によって生成されたものだと思いますか?GridViewHTMLJavascript
GridView内にある に対してアクションを実行するにはどうすればよいUpdatePanelですか?
私はASPネットAjaxツールキットを使用しており、GridView内にありUpdatePanel、すべて正常に動作します。
生成する必要があるテーブルに対していくつかを実行しようとすると、返される DOM に(または table )JQueryの兆候はありません。これはすべて ASP によって生成されたものだと思いますか?GridViewHTMLJavascript
GridView内にある に対してアクションを実行するにはどうすればよいUpdatePanelですか?
ASP.NET は、特定の条件下でコントロールの名前をマングルします。生成されたソースを調べて、生成時に ASP.NET によって指定された名前でコントロールを参照していることを確認してください。おそらく、マークアップで付けた名前ではありません。
これには、私が考えることができる3つの解決策があります。Dave が示唆するように、サーバーから ClientID を使用して javascript を注入する最初の方法は機能しますが、非常に速く面倒になります。私はしばらくの間これを行いましたが、サーバー側とクライアント側のそのような密結合が問題を引き起こします。
2 つ目は、css クラスなど、エンティティを識別する別の方法を提供することです。これは最初のオプションよりも優れていますが、多くの無関係なクラス定義をそのままにしておく必要があります。
私が好む解決策は、セレクター エンジンを持つ jQuery のような JavaScript フレームワークを使用することです。そうすれば、巧妙な選択と DOM トラバーサルによって UniqueID ガベージを回避できます。
myControl という名前のコントロールがあるとします。ASP.Net はその前に巨大な名前空間を生成するため、レンダリング時に ID の衝突はありません。ただし、myControl で終わる ID を持つすべてのオブジェクトを選択する $('[id$=myControl]') を実行することで、すべての myControl を選択できます。他のフレームワークでもこれを行う類似の方法があると思われますが、例を挙げられるほど詳しくはありません。
コードビハインドで、主張のために Page_Load で JavaScript を生成できる場合は、GridView1.ClientID などを JavaScript に挿入できます。(たとえば、ここでは TextBox を使用しますが、同じ概念に従います。)
protected void Page_Load(object sender, EventArgs e)
{
string js = "$(document).ready(function(){$(\"#" + this.TextBox1.ClientID + "\").text('hello world');});";
HtmlGenericControl script = new HtmlGenericControl("script");
script.Attributes.Add("type", "text/javascript");
script.InnerHtml = js;
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", js, true);
}