微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 如何在复选框列表中隐藏未选择的项目?

我有一个checkBoxlist,它从 XML文件获取数据.如果用户选择checkBoxlist上的项目,我只想显示该项目并隐藏其他所有项目.在此之下,我想添加可点击的文字,让用户选择别的东西.因此,如果使用单击该文本,用户将再次看到复选框列表,并选择第一个项目.

基本上看起来像这样.
那么我们如何实现这一目标呢?

非常感谢.

需要使用vb.net/和checkBoxlist控件,因为我们将动态地从数据库进行数据绑定.

解决方法

这是一种方式.使用两个Panel作为两个不同CheckBoxLists的容器.第一个显示“FROM” – 项目,后者显示“TO” – 项目.

第二个小组最初是invisivle.除了CheckBoxList之外,它还包含一个LinkBut​​ton来触发取消选择.

在BtnSelect上 – 单击,您将添加从第一个到第二个CheckBoxList的所选项目并显示它的面板.在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>

代码隐藏:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐