Here is a sample to pass column variables to control SORT ORDER:
<asp:GridView ID=”GridView1″ runat=”server” AutoGenerateColumns=”False”
DataSourceID=”SqlDataSource1″>
<Columns>
<asp:BoundField DataField=”Item” HeaderText=”Item” SortExpression=”Item” />
<asp:BoundField DataField=”Category” HeaderText=”Category”
SortExpression=”Category” />
<asp:BoundField DataField=”id” HeaderText=”id” SortExpression=”id” />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID=”SqlDataSource1″ runat=”server”
ConnectionString=”<%$ ConnectionStrings:mytest1ConnectionString %>” >
</asp:SqlDataSource>
<asp:Button ID=”Button1″ runat=”server” onclick=”Button1_Click” Text=”Sort” />
<asp:Button ID=”Button2″ runat=”server” onclick=”Button2_Click” Text=”ReverseSort” />
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SqlDataSource1.SelectCommand = “SELECT id, Item, Category FROM Items order by id desc”;
GridView1.DataBind();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string sortBySelected = “Item”;
string sortBySelected2 = “Category”;
SqlDataSource1.SelectCommand = “SELECT id,Item, Category FROM Items ORDER BY CASE WHEN @sortBySelected = ‘Item’ THEN Item END, CASE WHEN @sortBySelected2 = ‘Category’ THEN Category END”;
SqlDataSource1.SelectParameters.Clear();
SqlDataSource1.SelectParameters.Add(“sortBySelected”, sortBySelected);
SqlDataSource1.SelectParameters.Add(“sortBySelected2″, sortBySelected2);
GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
string sortBySelected = “Item”;
string sortBySelected2 = “Category”;
SqlDataSource1.SelectCommand = “SELECT id,Item, Category FROM Items ORDER BY CASE WHEN @sortBySelected = ‘Item’ THEN Item END DESC, CASE WHEN @sortBySelected2 = ‘Category’ THEN Category END DESC”;
SqlDataSource1.SelectParameters.Clear();
SqlDataSource1.SelectParameters.Add(“sortBySelected”, sortBySelected);
SqlDataSource1.SelectParameters.Add(“sortBySelected2″, sortBySelected2);
}
}