我使用方法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;
}
我该如何完成?请告诉我。预先感谢。
答案 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.
}
}