3

私はASPネットAjaxツールキットを使用しており、GridView内にありUpdatePanel、すべて正常に動作します。

生成する必要があるテーブルに対していくつかを実行しようとすると、返される DOM に(または table )JQueryの兆候はありません。これはすべて ASP によって生成されたものだと思いますか?GridViewHTMLJavascript

GridView内にある に対してアクションを実行するにはどうすればよいUpdatePanelですか?

4

3 に答える 3

2

ASP.NET は、特定の条件下でコントロールの名前をマングルします。生成されたソースを調べて、生成時に ASP.NET によって指定された名前でコントロールを参照していることを確認してください。おそらく、マークアップで付けた名前ではありません。

于 2009-01-03T01:02:49.770 に答える
0

これには、私が考えることができる3つの解決策があります。Dave が示唆するように、サーバーから ClientID を使用して javascript を注入する最初の方法は機能しますが、非常に速く面倒になります。私はしばらくの間これを行いましたが、サーバー側とクライアント側のそのような密結合が問題を引き起こします。

2 つ目は、css クラスなど、エンティティを識別する別の方法を提供することです。これは最初のオプションよりも優れていますが、多くの無関係なクラス定義をそのままにしておく必要があります。

私が好む解決策は、セレクター エンジンを持つ jQuery のような JavaScript フレームワークを使用することです。そうすれば、巧妙な選択と DOM トラバーサルによって UniqueID ガベージを回避できます。

myControl という名前のコントロールがあるとします。ASP.Net はその前に巨大な名前空間を生成するため、レンダリング時に ID の衝突はありません。ただし、myControl で終わる ID を持つすべてのオブジェクトを選択する $('[id$=myControl]') を実行することで、すべての myControl を選択できます。他のフレームワークでもこれを行う類似の方法があると思われますが、例を挙げられるほど詳しくはありません。

于 2009-02-11T20:38:43.907 に答える
0

コードビハインドで、主張のために 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);
}
于 2009-02-11T20:24:34.770 に答える