使用 GridView 的列对行进行排序 object returns 无结果

Sortings rows using columns of GridView object returns no results

我已经更改了 SqlDataSource 的 select 查询 object 并像这样将它绑定到 GridView

        protected void Button1_Click(object sender, EventArgs e)
    {
        if (ddlBloodGroup.SelectedValue != "Any")
        {
            bg = " And BloodGroup='" + ddlBloodGroup.SelectedValue + "'";
        }
        if (ddlRh.SelectedValue != "Any")
        {

            rh = " And Rh='" + ddlRh.SelectedValue + "'";
        }

        q = "select * from Donor Where 1=1 "+bg+rh;

        SqlDataSource1.SelectCommand = q;
        SqlDataSource1.DataBind();
        GridView1.DataBind();

    }

结果一目了然

但是当我单击列标题以按该列排序时,数据消失了

你必须处理排序事件

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    if (ddlBloodGroup.SelectedValue != "Any")
    {
        bg = " And BloodGroup='" + ddlBloodGroup.SelectedValue + "'";
    }
    if (ddlRh.SelectedValue != "Any")
    {

        rh = " And Rh='" + ddlRh.SelectedValue + "'";
    }

    q = "select * from Donor Where 1=1 "+bg+rh;

    SqlDataSource1.SelectCommand = q;
    SqlDataSource1.DataBind();
    GridView1.DataBind();
}

当然你需要允许排序

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataKeyNames="id" DataSourceID="SqlDataSource1" AllowSorting="True" 
    onsorting="GridView1_Sorting">