1

クライアント ID を取得しようとしている ASP に jQuery 関数があります。HTMLをレンダリングすると、結果としてこれが得られます。

[レンダリングされた HTML]

$("")//ctl00_Content_gvProgramList
                    .tablesorter({ widthFixed: true, widgets: ['zebra'],
                        widgetOptions: {
                            zebra: ["even", "odd"]
                        }
                    })
                    .tablesorterFilter({ filterContainer: $("#filter-box"),
                        filterClearContainer: $("#filter-clear-button"),
                        filterColumns: [0, 1, 2, 3],
                        filterCaseSensitive: false
                    })
                    .tablesorterPager({ container: $("#pager") });

[分離コード]

        $("<%# gvProgramList.ClientID %>")//ctl00_Content_gvProgramList
                .tablesorter({ widthFixed: true, widgets: ['zebra'],
                    widgetOptions: {
                        zebra: ["even", "odd"]
                    }
                })
                .tablesorterFilter({ filterContainer: $("#filter-box"),
                    filterClearContainer: $("#filter-clear-button"),
                    filterColumns: [0, 1, 2, 3],
                    filterCaseSensitive: false
                })
                .tablesorterPager({ container: $("#pager") });

私がct100_Content_gvProgramListすべてのJavaScriptを使用すると、本来のように機能するので、それに関連する回答を投稿しないでください。ClientIDを正しく表示する方法についての回答が必要です。


アップデート

を使用したいのです $('#<%= gvProgramList.ClientID %>')が、エラーが発生します。

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). 

Line 16:         Head.Controls.Add(Header())
Line 17:         Head.Controls.Add(Menu())
Line 18:         Foot.Controls.Add(Footer())
4

3 に答える 3

3

使用する:

<%= ... %>

それ以外の:

<%# ... %>

そう:

$('#<%= gvProgramList.ClientID %>') ...

更新後

コード ビハインドでコントロール コレクションを構築/変更しているため、 Response.Write()( )を実行しようとすると aspnet がバーフィングします<%= ... %>。コントロールの の代わりにクラス名を使用してみてくださいid

または:

<script> ... </script>内側を包み<asp:placeholder>ます。これにより、スクリプトは、エラーの原因となっているサーバー側のコントロールではなく、プレース ホルダーの子になります。

于 2012-06-05T19:54:17.273 に答える
0
<%# ... %>

これはデータバインディング用なので、これを行うことができます

Page.DataBind();
于 2012-06-05T20:31:20.763 に答える
0

もう 1 つのオプションは、バインドを、コード ビハインドに入力するプレースホルダー コントロールに置き換えることです。したがって、.aspx/.ascx ファイルでは、これを置き換えます。

$('#<%= gvProgramList.ClientID %>')

これとともに:

<asp:PlaceHolder id="phProgramListClientId" runat="server"></asp:PlaceHolder>

次に、コード ビハインドで次の操作を実行できます。

phProgramListClientId.Controls.Add( new LiteralControl( 
    String.Format( "$('#{0}')", gvProgramList.ClientID ) ) );
于 2012-06-05T20:23:45.190 に答える