한 가지 방법이 있습니다. 두 개의 다른 CheckBoxLists에 대한 컨테이너로 두 개의 패널을 사용하십시오. 첫 번째는 "FROM"- 항목과 "TO"- 항목을 표시합니다.
두 번째 패널은 처음에는 보이지 않습니다. CheckBoxList 외에도 선택 취소를 트리거하는 LinkButton이 있습니다.
BtnSelect
클릭 - 첫 번째부터 두 번째 CheckBoxList에서 선택한 항목을 추가하고 패널로 표시합니다. On BtnChangeSelection
- 클릭하면 두 패널의 가시성을 전환하고 첫 번째 항목 만 선택하면됩니다.
이미 여러 항목을 선택하여 사용할 수 있습니다.
ASPX (CSS 당신까지이다) :
<div>
<asp:Panel ID="PnlChkListAcademicYear" runat="server">
<asp:CheckBoxList ID="ChkListAcademicYear" runat="server" /><br />
<asp:LinkButton ID="BtnSelect" Text="Select" runat= "server" ></asp:LinkButton>
</asp:Panel>
<asp:panel ID="PnlChkListAcademicYearActive" Visible="false" runat="server">
<asp:CheckBoxList ID="ChkListAcademicYearActive" Enabled="false" runat="server" /><br />
<asp:LinkButton ID="BtnChangeSelection" Text="Change selection" runat= "server" ></asp:LinkButton>
</asp:panel>
</div>
Codebehind가 : 이것은 내 샘플 코드의 나머지 부분은 완전성을 위해,
Private Sub BtnSelect_Click(sender As Object, e As System.EventArgs) Handles BtnSelect.Click
If Me.ChkListAcademicYear.SelectedIndex <> -1 Then
Dim selectedItems = (From item In Me.ChkListAcademicYear.Items.Cast(Of ListItem)() Where item.Selected).ToArray
Me.ChkListAcademicYearActive.Items.Clear()
Me.ChkListAcademicYearActive.Items.AddRange(selectedItems)
Me.PnlChkListAcademicYearActive.Visible = True
Me.PnlChkListAcademicYear.Visible = False
End If
End Sub
Private Sub BtnChangeSelection_Click(sender As Object, e As System.EventArgs) Handles BtnChangeSelection.Click
Me.ChkListAcademicYear.SelectedIndex = 0
Me.PnlChkListAcademicYearActive.Visible = False
Me.PnlChkListAcademicYear.Visible = True
End Sub
입니다 :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
BindCheckboxList()
End If
End Sub
Private Sub BindCheckboxList()
Me.ChkListAcademicYear.DataSource = GetData()
Me.ChkListAcademicYear.DataTextField = "Year"
Me.ChkListAcademicYear.DataBind()
End Sub
Private Function GetData() As DataTable
Dim years = {"2010/2009", "2009/2008", "2008/2007", "2007/2006", "2006/2005", "2005/2004", "2004/2003"}
Dim tbl = New DataTable
tbl.Columns.Add(New DataColumn("Year"))
For Each y In years
tbl.Rows.Add(y)
Next
Return tbl
End Function
jQuery를 사용하면이 모든 작업을 수행 할 수 있습니다. 서버 오버 헤드가 훨씬 적고 다시 게시 할 필요가 없습니다. –
자바 스크립트가 지원되지 않는 사용자는 전체 체크 박스 목록을 볼 수 있습니다. 서버 측 유효성 검사를 수행하면 두 개 이상을 확인하지 않아도됩니다. –