1

jqueryui accordin clickでプレースホルダーをロードする際に問題があります。バックエンドから入力しました。アコーディンヘッダーのクリックに基づいてプレースホルダーを設定する必要があります。

これは私のHTMLです

<html>
<head>
    <script>

    $(function () {
        $('#login').button({ icons: { primary: "ui-icon-person"} });
        $('#showDataSource').button({ icons: { primary: "ui-icon-newwin"} });
        $('#logout').button({ icons: { primary: "ui-icon-locked"} });

        $('#login').click(function () {

            var panel = $('#loginPanel').dialog({ modal: true });
            panel.parent().appendTo($("form:first"));
        });

        $('#logout').click(function () {
            (function (event) {

            });
        });

        $('#showDataSource').click(function () {
            $('#dataSource').dialog({ modal: true, width: 1000, height: 700 });
            $('.accordion').accordion({ autoHeight: false, navigation: true, collapsible: true,
                active: false,
                changestart: function (event, ui) {
                    var dataSourceID = ui.newHeader.find('a').attr('id');
                    //var dataSourceColumn = EasyOutputWeb.Services.GetDataSourceColumns(dataSourceID, onsuccess, onError);
                    $.post(dataSourceID, function (data) {

                        //ui.newHeader.next("div").html(dataSourceID);
                        $('#columnPlaceHolder').html(dataSourceID);
                    });
                }
            });
        });
    });

    function onsuccess(msg) {
        alert(msg);
    }
    function onError(msg) {
        alert(msg);
    }

    </script>

</head>

<body>
        <div id="dataSource" runat="server">  
                <div class="divtable">  
                    <div class="headrow" id="#accordianHeight">  
                        <div class="divcol">  
                            Data Sources</div>  
                        <div class="divcol" >  
                            Columns</div>  
                        <div class="divcol">  
                            Strong Keys</div>  
                    </div>  
                    <div class="divrow">  
                        <div class="content">  
                            <div class="accordion" id="accordianHeight">  
                                <asp:PlaceHolder ID="dataPlaceHolder" runat="server" />  
                            </div>  
                        </div>  
                        <div class="content">  
                            <div id="dataColumn">  
                                test column  
                                <asp:PlaceHolder ID="columnPlaceHolder" runat="server" />  
                            </div>  
                        </div>  
                        <div class="content" >  
                            <div id="dataKey">  
                                Test key  
                                <asp:PlaceHolder ID="keyPlaceHolder" runat="server" />  
                            </div>  
                        </div>  
                    </div>  
                </div>  
            </div>  

</body>
</html>
4

1 に答える 1

0

ここでの最初の間違いは、それらがどのタグでもワープされていないPlaceHolderことを使用しているため、jQuery がそれらを取得できないことです。そのワープをコンテンツのスパンまたは div で使用します。Panel

2 番目の間違いは、asp.net がそれらをレンダリングするときに、それぞれの最終的な ID が.ClientIDプロパティから取得されるため、jQuery のコードは次のようになります。

$('#<%=columnPlaceHolder.ClientID%>').html(dataSourceID);

1 つのコメントとして、コード ビハインドにコントロールを実際に追加しない場合は、コードをPanel配置して<div id="columnPlaceHolder"></div>コードを記述し、そのまま jQuery 呼び出しを使用します (CliendID を追加しないでください)。

于 2012-07-27T08:59:19.347 に答える