グリッドビューは、非表示フィールドの値をクリアしました。したがって、非表示になっているかどうかに関係なく、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";
....
}
}