1

私はASP.NETMVC4プロジェクトに取り組んでいます。これは、ある種の評価ツールです。私の見解では、CoWorkersは、データベースから要求されたデータでデータテーブルを埋めています。最初の列に名前を表示し、2番目の列に個人ファイルへのリンクを表示します。そのビューは「PersoonlijkeFichePartial」と呼ばれるパーシャルにあるため、データテーブル内のリンクをクリックすると、データテーブルの下のdivでパーシャルを開く必要があります。私はこれをajax呼び出しで行います。しかし、結果のdivは空です。ビューに表示したくないので、jqueryを使用しました。問題は、データテーブル内のリンクをクリックすると(ajax呼び出しを使用して)、結果のdivが表示されないことです(何らかのコールバックが必要ですか?)

編集 結果のdivを非表示にするjqueryコードをカットすると、部分的なビューが表示されます(テーブルofcのリンクをクリックしたとき)が、そのdivを非表示にするコードが必要です。 、だから誰かが私のテーブルのリンクをクリックする前にそこにはありません。

コードは次のとおりです。

<div class="ContentDiv">
    <table id="table_id" class="display">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Naam)
                </th>
                <th>Persoonlijke Fiche
                </th>
                <th>Functiebeschrijving
                </th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                    @Html.DisplayFor(modelItem => item.Naam)
                    <td>
                        @Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result"})
                    </td>
                    <td>
                        @Html.ActionLink("Functiebeschrijving", "Details", new { account = item.Account })
                    </td>
                </tr>
            }
        </tbody>
    </table>
</div>
<div id="generate" class="ContentDiv">
    <div id="result"></div>
</div>



@section scripts {
    <script type="text/javascript" src="~/Scripts/jquery.dataTables.js"></script>
    <script>
        $(document).ready(function () {
            $('#table_id').dataTable({
                "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {     "bSortable": false }]
            }
                );
        });
        $(function () {
            if ($("div#result").html() == "") {
                $("div#generate").hide();
            }
        });
    </script>
}
4

1 に答える 1

1

次のようにコードを編集してみてください。

<script>
        $(document).ready(function () {
            $('#table_id').dataTable({
                "aoColumns": [{ "bSortable": true }, { "bSortable": false }, {     "bSortable": false }]
            });
            toggleResultDiv()
        });

        function toggleResultDiv() {
            if ($("div#result").html() == "") {
                $("div#generate").hide();
            }
            else $("div#generate").show();
        }
    </script>

次のようにajax呼び出しを変更します。

@Ajax.ActionLink("Persoonlijke Fiche", "PersoonlijkeFichePartial", new { account = item.Account }, new AjaxOptions { UpdateTargetId = "result", OnSuccess = "toggleResultDiv"})

divを表示または非表示にする関数を呼び出す必要があります。あなたの場合、それは一度だけ呼び出され、常に非表示になりますdiv#generate

于 2013-03-27T12:23:35.563 に答える