긴 목록을 보여주는 목록보기가 있습니다. 각 항목은 '숨길'수있는 기능이 있습니다. 확인란을 선택하여 모든 목록을 표시하거나 숨겨진 목록을 표시하지 않겠습니다. 사용자는 더 이상보고 싶지 않은 오래된 항목을 숨기고 어떤 시점에서는보고 싶을 수 있습니다. 이 결정의 값을 세션 변수에 저장하려면 사용자가 다른 페이지로 이동 한 다음 다시 돌아 오면 ShowAllCheckbox는 사용자가 이전에 결정한 내용으로 미리 채 웁니다. 모든 것이 유지되고 세션 변수를 얻을 수 없다는 점을 제외하고는 잘 작동합니다. 계속 False로 돌아갑니다.체크 박스로 설정된 세션 변수가 페이지간에 저장/공유되지 않음
aspx 페이지 :
Show Hidden: <asp:Checkbox ID="ShowHiddenCheckbox" runat="server" AutoPostBack="True" OnCheckedChanged="ShowHiddenCheckboxChange" />
...
<asp:ListView ...>
<!-- this list works fine, and pulls the correct records -->
aspx.vb 페이지 : 내가 다른 페이지로 이동 한 다음에 다시 올 때
Protected Sub ShowHiddenCheckBoxChange(ByVal sender As Object, ByVal e As EventArgs)
' toggle the values
Dim CheckBoxField As CheckBox = TryCast(sender, CheckBox)
If CheckBoxField.Checked Then
Session("ShowHiddenRotations") = False
Else
Session("ShowHiddenRotations") = True
End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'if i navigate to another page, and come back to this one, this comes back as "False". I don't understand how it could be reset to False.
Response.Write("Session: " & Session("ShowHiddenRotations"))
'when page loads check if session variable has been set to show/hide the hidden rotations
If Session("ShowHiddenRotations") Then
If Session("ShowHiddenRotations") = True Then
'update sql query on select statement to show the hidden rotations
'update checkbox to show it as checked
ShowHiddenCheckBox.Checked = True
Else
ShowHiddenCheckBox.Checked = False
End If
Else
'not checked by default (ie don't show hidden)
ShowHiddenCheckBox.Checked = False
End If
End Sub
세션 변수가 항상 False로 다시 되돌아을이 내가 가진 무엇 이 하나. 세션 변수에 대한 나의 이해는 사용자가 브라우저를 닫을 때까지 한 페이지에서 다른 페이지로 값을 전달한다는 것이 었습니다. 어쩌면이 작업을 수행하는 또 다른 방법이있을 수 있습니다. 어떤 도움을 많이 주시면 감사하겠습니다! 감사!
감사합니다. Jakob. 세션 상태가 활성화되어 있음을 보여주는 테스트가 조금 더 많아서 문제가되지 않습니다. 각 행이 아니라 페이지에 하나의 확인란 만 있습니다. – russds