在gridview中保存可见div的状态

时间:2012-06-07 08:35:48

标签: javascript .net

我有一个隐藏字段,用于存储有关gridview中包含的div的可见性的信息。

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

然后我在javascript中设置了值。

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

我可以看到它正在进行回发,其中值被清除。当我在gridview之外尝试相同的概念时,这似乎有效,但由于某种原因,数据绑定可能会清除值?反正有没有将值保留在回发之间的隐藏字段中?

1 个答案:

答案 0 :(得分:0)

gridview清除了隐藏字段上的值。因此,它无法用于存储隐藏或不隐藏的div的值。

我通过创建一个div“divhidden”来解决它,它添加了隐藏值,可用于设置我的javascript编辑的可见性。

隐藏div的信息现在存储在这些隐藏值的回发之间。

的aspx页:     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";
    ....
}

}