Witam.
Mam problem z sortowaniem gridview poprzez updatepanel.
Mam updatepanel:

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="DropDownList2" EventName="SelectedIndexChanged" />
            <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="SelectedIndexChanging" />
            <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="Sorting" />
            <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
        </Triggers>
        <ContentTemplate>
        <asp:GridView ID="GridView1" runat="server" AllowSorting="True" 
                    BackColor="#FFFFCC" Width="100%" AutoGenerateSelectButton="True" 
                    BorderWidth="1px" EnableSortingAndPagingCallbacks="True" 
                    onselectedindexchanging="GridView1_SelectedIndexChanging" 
                    onselectedindexchanged="GridView1_SelectedIndexChanged" 
                onsorting="GridView1_Sorting" onsorted="GridView1_Sorted">
                    <Columns>
                        <asp:BoundField DataField="nazwa_dysku" HeaderText="Nazwa Dysku" 
                            SortExpression="nazwa_dysku" />
                            <asp:BoundField DataField="folder" HeaderText="Folder" 
                            SortExpression="folder" />
                            <asp:BoundField DataField="nazwa_pliku" HeaderText="Nazwa Pliku" 
                            SortExpression="nazwa_pliku" />
                            <asp:BoundField DataField="czas_trwania" HeaderText="Czas trwania" 
                            SortExpression="czas_trwania" />
                            <asp:BoundField DataField="rozmiar" HeaderText="Rozmiar" 
                            SortExpression="rozmiar" />
                            <asp:BoundField DataField="data_utworzenia" HeaderText="Data utworzenia" 
                            SortExpression="data_utworzenia" />
                            <asp:BoundField DataField="data_modyfikacji" HeaderText="Data modyfikacji" 
                            SortExpression="data_modyfikacji" />
                            <asp:BoundField DataField="sciezka" HeaderText="Lokalizacja" 
                            SortExpression="sciezka" />
                    </Columns>
                    <HeaderStyle BackColor="#9A6E71" Font-Size="Medium" />
                    <SelectedRowStyle BackColor="Red" />
                </asp:GridView>
        </ContentTemplate>
        </asp:UpdatePanel> 

I kod go obsługujący:

 
public bool dane(int numerdysku)
        {

            string connectionString = "data source=localhost ;initial catalog=archiwizacjatvs;user id=user;password=password";
            MySqlConnection conn = new MySqlConnection(connectionString);
            try
                {
                conn.Open();
                MySqlDataAdapter dadapter = new MySqlDataAdapter("select nazwa_dysku,folder,nazwa_pliku,czas_trwania,rozmiar,data_utworzenia,data_modyfikacji,sciezka from archiwum where nazwa_dysku='" + DropDownList2.SelectedValue.ToString() + "'", conn);
                DataSet ds = new DataSet();
                dadapter.Fill(ds);
                DataTable tablica = new DataTable();
                dadapter.Fill(tablica);
                DataTableReader datatablereader = tablica.CreateDataReader();
                if (tablica.Rows.Count > 0)
                    {
                    GridView1.DataSource = tablica;
                    GridView1.DataBind();
                    Session["TaskTable"] = tablica;
                    }
                conn.Close();
                }
            catch (Exception ex)
                {
                TextBox2.Text = ex.ToString();
                }
            return true;
        }

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dt = Session["TaskTable"] as DataTable;

        if (dt != null)
        {
            dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
            GridView1.DataSource = Session["sess_table"];
            GridView1.DataBind();
            UpdatePanel2.Update();
        }
        
    }


private string GetSortDirection(string column)
    {

        TextBox2.Text = "Uruchamiam sortdirection";
        // By default, set the sort direction to ascending.
        string sortDirection = "ASC";

        // Retrieve the last column that was sorted.
        string sortExpression = ViewState["SortExpression"] as string;

        if (sortExpression != null)
        {
            // Check if the same column is being sorted.
            // Otherwise, the default value can be returned.
            TextBox2.Text = "Sort expression nie jest pusty! Sortowana kolumna to:" + column;
            if (sortExpression == column)
            {
                string lastDirection = ViewState["SortDirection"] as string;
                if ((lastDirection != null) && (lastDirection == "ASC"))
                {
                    sortDirection = "DESC";
                }
            }
        }

        // Save new values in ViewState.
        ViewState["SortDirection"] = sortDirection;
        ViewState["SortExpression"] = column;

        return sortDirection;
    }

Zasada działania:

  1. Użytkownik dropdownlist wybiera sobie numer dysku jaki chce przejrzeć z bazy danych. Zawartość dysku jest dynamicznie wyświetlana w updatepanelu. Status: działa.
  2. Użytkownik chciałbym posortować wyniki według określonych kryteriów. W tym momencie powinien zrobić to na tym samym gridview. No i w moim kodzie kiedy kliknie na jakąkolwiek rubrykę to znika mi gridview. Kod jest troszke zmieniony od tego:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx

No i działa. Jednak kiedy wkładam go w updatepanel i page_load zamieniam na wywołanie funkcji dane(int numerdysku) to już przestaje. Miałem podobny problem ale umieściłem dane w innym updatepanelu jednak nie chciałbym za bardzo mieszać w kodzie. Jakieś sugestie?