0

グリッドビューに含まれるdivの可視性に関する情報を格納するための隠しフィールドがあります。

<asp:HiddenField id="divhidden" runat="server" />

次に、javascriptで値を設定します。

weekrow.getElementsByTagName('input')[0].value = 'visible';

値がクリアされるポストバックのポイントまで機能していることがわかります。これは、グリッドビューの外で同じ概念を試したときに機能するようですが、何らかの理由で、データバインドによって値がクリアされる可能性がありますか?ポストバック間の隠しフィールドに値を保持する方法はありますか?

4

1 に答える 1

0

グリッドビューは、非表示フィールドの値をクリアしました。したがって、非表示になっているかどうかに関係なく、divの値を保存するために使用することはできませんでした。

私は、JavaScriptによって編集された可視性を設定するために使用できるhiddenvaluesを追加するdiv「divhidden」を作成することでそれを解決しました。

divが非表示になっている情報は、これらの非表示の値のポストバック間に保存されるようになりました。

aspx-page:hiddenDiv = new System.Web.UI.HtmlControls.HtmlGenericControl( "DIV"); hiddenDiv.ID = "hiddenValuesDiv"; PlanningForm.Controls.Add(hiddenDiv);

      Label weekLabel = row.FindControl("weeknr") as Label;
      if (weekLabel != null && PlanningForm.FindControl("visiblediv" + weekLabel.Text) == null) {

          HiddenField divvisible = new HiddenField();
          divvisible.ID = "visiblediv" + weekLabel.Text;
          //Open the first two divs
          if (!Page.IsPostBack) {
              if(openDivCount < 2)
              divvisible.Value = "block";
              openDivCount++;
          }
          hiddenDiv.Controls.Add(divvisible);
      }

そしてjavascriptコード:

function expandcollapse(obj, row) {
var hidden = document.getElementById(GetClientId('visible' + obj));
var warningonweek = weekrow.getElementsByTagName('td')[0].getElementsByTagName('img')
if (div.style.display == "none") {
    div.style.display = "block";
    ....
}
else {
    div.style.display = "none";
    ....
}

}

于 2012-08-30T08:51:34.833 に答える