0

我需要根据下拉列表显示gridview:LatestTransactionFirst,EarlyTransactionFirst。所以基本上它是基于gridview中的日期的desc或asc。我可以知道我该怎么做吗?

这是我的 gridview 选择代码。但我有一个下拉列表,需要根据下拉列表选择显示网格视图。

    myConnection.ConnectionString = strConnectionString;
    SqlCommand cmd = new SqlCommand("SELECT thDate, thType, thAmountIn, thAmountOut from [Transaction] ORDER BY thDate, thType, thAmountIn, thAmountOut DESC", myConnection);
    myConnection.Open();
    SqlDataReader reader1 = cmd.ExecuteReader();
    GridView1.DataSource = reader1;
    GridView1.DataBind();
4

2 回答 2

1

1)您可以在查询中使用动态排序依据,最好使用存储过程

2)快速而肮脏的方式将在您的下拉列表中传递 selectedValue 选择索引更改事件并重新绑定您的gridview,同时在下拉列表中启用自动回发为true。就像是

protected void yourDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
   BindYourGridView(yourDropDown.SelectedValue);  
}

BindYourGridView(string sortParam)
{
   string orderBy=null;
   switch sortParam
   {
         case 0:
             orderBy= "ORDER BY thDate, thType, thAmountIn, thAmountOut DESC"
             break;
         case 1:
             orderBy= "ORDER BY thDate, thType, thAmountIn, thAmountOut"
             break;   
   }
  string yourQuery= "Select columns from table "+ orderBy;
  // Your data access code
  // Bind your gridview
}


//ASPX
   <asp:DropDownList ID="yourDropDownList" runat="server" AutoPostBack="True">
   <asp:ListItem Text="Recent First" Value="0" />
   <asp:ListItem Text="Earlier First" Value="1" />
   </asp:DropDownList>
于 2012-07-27T06:06:46.263 回答
0

这是一个在gridview中排序的例子

DataView dvItems = new DataView((DataTable)ds.Tables["datatable1"]);

 if (ddl_itemsorderby.SelectedValue == "MenuGroup")
     dvItems.Sort = "Menu_Group, Item_Name ASC";
 else if (ddl_itemsorderby.SelectedValue == "Item")
     dvItems.Sort = "Item_Name, Menu_Group ASC";
 else if (ddl_itemsorderby.SelectedValue == "Rate")
     dvItems.Sort = "Item_rate, Item_Name ASC";
 else if (ddl_itemsorderby.SelectedValue == "Quantity")
     dvItems.Sort = "Item_Quantity, Item_Name ASC";

 gridview1.DataSource = dvItems;
 gridview1.DataBind();

这里 Menu_Group,Item_name ... 是您绑定到网格视图的数据表中的列名。

“Menu_Group, Item_Name ASC” 这意味着将给 Menu_Group 优先顺序优先级,将给 Item_Name 赋予第二顺序优先级。ASC 是订单类型将升序

ddl_itemsorderby 是从中选择列顺序的下拉列表。
dvitems 是数据视图。

ASC 是升序。

您必须创建一个包含数据表中数据的数据视图,然后对数据视图中的值进行排序,然后将数据视图绑定到网格视图

于 2012-07-27T06:22:14.277 回答