获取下拉列表以与网格视图交互

本文关键字:视图 交互 网格 下拉列表 获取 | 更新日期: 2023-09-27 18:27:24

我有一个网格视图,看起来像这样:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  PageSize="10"
        DataKeyNames="id" 
        OnRowEditing="GridView1_RowEditing"
        OnRowCancelingEdit="GridView1_RowCancelingEdit"
        OnRowUpdating="GridView1_RowUpdating"
        OnPageIndexChanging="GridView1_PageIndexChanging"
        OnPageIndexChanged="GridView1_PageIndexChanged"
        AllowPaging="True">

工作良好。我想在网格视图上方添加一个下拉框,作为数据库结果的过滤器:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
    <asp:ListItem Value="0">Show all</asp:ListItem>
    <asp:ListItem Value="1">In queue</asp:ListItem>
    <asp:ListItem Value="2">Being worked on</asp:ListItem>
    <asp:ListItem Value="3">Complete</asp:ListItem>
    <asp:ListItem Value="4">Declined</asp:ListItem>
</asp:DropDownList>

如何使下拉列表与网格视图交互以相应地更新结果?请记住,网格视图已启用分页功能,因此单击页面时应记住下拉选项,还应根据页码和下拉选择记住数据库结果。

更新:

我按照如下方式填充网格视图,其中BindData进入Page_Load:

private void BindData()
{
    SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["connString"]);
    SqlDataAdapter da = new SqlDataAdapter(@"sql query here", con);
    DataTable dt = new DataTable();
    da.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
}

Page_Load如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindData();
    }
}

获取下拉列表以与网格视图交互

BindData()方法中,如果选择了DropDownList1,则需要传递其中的筛选值,并相应地修改SQL。您可能还需要在SQL语句中传递请求的页码,以便在SELECT中过滤结果(具体取决于您如何进行分页,如您所述)。

然后在DropDownList1AutoPostBack方法中调用BindData()

通过这种方式,每次更改下拉列表值时,它都会调用BindData()方法,并传递任何相关的过滤器和页码以获得相关结果。

您可以在DropDownList1的indexchnage事件中编写以下代码

DataView dataView = dt.DefaultView;
dataView.RowFilter = "NewsDate2 = '" + DropDownList1.SelectedValue + "'";
GridView1.DataSource = dataView;
GridView1.DataBind();