回发后在列表框上进行多个选择

时间:2018-10-18 12:34:51

标签: c# asp.net drop-down-menu

我使用方法a填充多个列表框。我使用viewstate在回发后获取下拉菜单。它用于过滤gridview。为简单起见,我只显示一个列表框。我希望能够在列表框中进行多个选择,以便Gridview根据选择显示数据。

下面是客户端代码

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
<link href="//cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
<script src="//cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        $('#ddlgvsite, #ddlgvskill, #ddlgvshift, #ddlgvtm, #ddlgvgrpm, #ddlgvopsm, #ddlgvltype').multiselect({
                includeSelectAllOption: true
        });
     });
</script>

<asp:ListBox ID="ddlgvsite" runat="server" OnSelectedIndexChanged="DropDownChange" SelectionMode="Multiple" AutoPostBack="true" AppendDataBoundItems="true">
                    </asp:ListBox>

下面是服务器端代码

private void BindDropDownList()
{
    PopulateDropDown(ddlgvsite, lblsite.Text);
}
private void PopulateDropDown(ListBox ddl, string columnName)
{
    ddl.DataSource = BindDropDown(columnName);
    ddl.DataTextField = columnName;
    ddl.DataValueField = columnName;
    ddl.DataBind();
    ddl.Items.Insert(0, new ListItem("Please Select", "0"));
}
private void setDropdownselectedItem(string selectedvalue, ListBox ddl)
{
    if (!string.IsNullOrEmpty(selectedvalue))
    {
        ddl.Items.FindByValue(selectedvalue).Selected = true;
    }
}
protected void DropDownChange(object sender, EventArgs e)
{
    ListBox dropdown = (ListBox)sender;
    string selectedValue = dropdown.SelectedItem.Value;
    switch (dropdown.ID.ToLower())
    {
        case "ddlgvsite":
            ViewState["Site"] = selectedValue;
            break;
    }
    this.BindGrid();
}
private DataTable BindDropDown(string columnName)
{
    String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
    MySqlConnection con = new MySqlConnection(strConnString);
    MySqlCommand cmd = new MySqlCommand("SELECT DISTINCT (" + columnName + ") FROM approved WHERE " + columnName + " IS NOT NULL", con);
    MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    sda.Fill(dt);
    return dt;
}

我该如何完成?请告诉我。预先感谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该为列表框启用视图状态;

    <asp:ListBox EnableViewState="true" 
ID="ddlgvsite" runat="server" OnSelectedIndexChanged="DropDownChange" 
    SelectionMode="Multiple" 
    AutoPostBack="true" AppendDataBoundItems="true">
                        </asp:ListBox>

您可以像这样获得所有选定的项目;

 foreach (ListItem item in ddlgvsite.Items)
        {
            if (item.Selected)
            {
                //Get selected items here.

            }
        }
相关问题