0

次のhtmlテーブルがあります

   <table id="{64ED3A94-5833-4CC7-869F-CCE583B498BE}" class="ms-listviewtable"
            width="100%" cellspacing="0" cellpadding="1" border="0" 
            xmlns:o="urn:schemas-microsoft-com:office:office" dir="none">
       <tbody id="tbod23-1__" isloaded="true" style="display: none;"></tbody>
       <tbody id="tbod23-2__" isloaded="true" style=""></tbody>
       <tbody id="tbod23-3__" isloaded="true" style="display: none;"></tbody>
       <tbody id="tbod23-4__" isloaded="true" style=""></tbody>
       <tbody id="tbod23-5__" isloaded="true" style="display: none;"></tbody>
       <tbody id="tbod23-6__" isloaded="true" style="display: none;"></tbody>
       <tbody id="tbod23-7__" isloaded="true" style="display: none;"></tbody>
    </table>

このテーブルは、sharepoint xsltlistviewwebpart によって自動生成されます (質問は jquery+html に関連しているため、sharepoint には投稿しませんでした)。

これはノードを含むツリービューです。折りたたまれたノードを展開すると、スタイルが変わります

style="display: none;" 

style=""

問題: Web パーツは折りたたまれたノードを記憶していないため、ポストバックごとにすべてが展開された状態にリセットされます。私がする必要があるのは、ノードの状態 (展開または折りたたみ) を jquery Cookie に記憶し、ポストバックでそれを取得することです (つまり、ノードの状態を保持するため)。

これまでのところ、私は得ました:

<script type="text/javascript">
_spBodyOnLoadFunctionNames.push("RememberClickedState");

function RememberClickedState()
{
var dv = $('.ms-listviewtable');
var items = [];
items = dv.find('tbody[id^="tbod"]');
$.cookie("itemListState", items);
    alert(items[0]);
    alert(items[1]);
 }

 </script>

誰でもこれを行う方法についていくつかの指針を提供してください。イベント自体について少しぼんやりと混乱しています.page_loadでは、Cookieを保存するだけでなく、何らかの方法で取得する必要があります。

また、「items」配列には7つの要素すべてが保存されていましたが、alert(items[0]); を試してみると、私は未定義になります。

ありがとうございました

4

1 に答える 1