2012-07-27 69 views
0

我需要根據下拉列表將顯示在GridView排序的GridView:LastestTransactionFirst,EarlierTransactionFirst。所以基本上它是基於gridview中日期的desc或asc。我可以知道我該怎麼處理它?如何根據下拉列表中選擇

這是我的gridview選擇代碼。但是我有一個下拉列表,需要根據下拉列表選擇來顯示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(); 

回答

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 ......是你綁定到GridView的數據表中的列名。

「Menu_Group,ITEM_NAME ASC」這意味着ForSE召開前夕順序prority將首先給予Menu_Group和第二優先順序將給予ITEM_NAME。 ASC是訂單類型將會升序

ddl_itemsorderby是從中選擇列順序的下拉列表。
dvitems是數據視圖。

ASC是升序。

你必須創建包含在數據表中的數據一個數據視圖和然後在數據視圖中的值進行排序,然後將數據視圖綁定到GridView

+0

嗨,datatable1是數據庫中的表嗎?我可以知道把這個編碼放在哪裏嗎?它在 保護無效DropDownList2_SelectedIndexChanged(對象發件人,EventArgs e)? – KYQ 2012-07-27 06:42:24

+0

datatable是你將你的數據綁定到gridview的表格 它不是數據庫表格 你會將數據從數據庫中提取到數據表格中以便將其綁定到gridview上 – 2012-07-27 06:47:07

+0

你必須編寫代碼在下拉列表中選擇指數變化(如果你這樣做,你必須使用更新面板) 否則將下降downlist旁邊有一個按鈕,並寫在按鈕 – 2012-07-27 06:49:11

1

1)您可以最好使用存儲過程

2)快速&骯髒的方式將通過您的下拉列表中選擇指數變化的事件了selectedValue &在查詢中使用Dynamic Order By重新綁定你的GridView ,還可以在下拉列表中啓用autopostback爲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> 
+0

BindYourGridView(Convert.ToInt32(yourDropDown.SelectedValue)); 嗨,BindYourGridView,它是GridView1嗎? – KYQ 2012-07-27 06:35:01

+1

是的,它是Gridview1。另請檢查我的更新代碼 – 2012-07-27 06:39:59

相關問題