2015-10-13 31 views
1

所以我排序工作,但它只運行升序。當我再次單擊它時,仍然按升序運行。我調試它,sortDirection永遠不會改變。 這裏是我的排序代碼。我研究了使用viewstate,但無法找到一個乾淨的方式來使用它的情況。僅gridview ASC正在分揀

private string ConvertSortDirectionToSql(SortDirection sortDirection) 
{ 
    string newSortDirection = String.Empty; 

    switch (sortDirection) 
    { 
     case SortDirection.Ascending: 
      newSortDirection = "ASC"; 
      break; 

     case SortDirection.Descending: 
      newSortDirection = "DESC"; 
      break; 
    } 

    return newSortDirection; 
} 

protected void caseloads_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable dataTable = caseloads.DataSource as DataTable; 

    if (dataTable != null) 
    { 
     DataView dataView = new DataView(dataTable); 
     dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 

     caseloads.DataSource = dataView; 
     caseloads.DataBind(); 
    } 
} 
+0

你能向我們展示了你的GridView前端代碼? – Marusyk

+0

Try dataTable = dataView.ToTable();並且他們將dataTable分配爲您的GridView源。如果你有一個gridview坐在更新面板中,那麼你必須調用面板上的Update()方法。 – Hakunamatata

回答

-1

所以我去視圖狀態。它設置開始升序,所以你甚至可以改變它降序如果你想這樣做。 caseLoads();是我gridview存儲和拉動所有信息的地方。

然後在排序中,我們有如果語句正在尋找升序和降序。

private string ConvertSortDirectionToSql(SortDirection sortDirection) 
{ 
    string newSortDirection = String.Empty; 
    string sort = Convert.ToString(ViewState["sorting"]); 

    if (sort == "Ascending") 
    { 
     newSortDirection = "ASC"; 
     ViewState["sorting"] = "Descending"; 
    } 
    else if (sort == "Descending") 
    { 
     newSortDirection = "DESC"; 
     ViewState["sorting"] = "Ascending"; 
    } 

    return newSortDirection; 
} 

這裏是GridView的排序

protected void caseloads_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable dataTable = caseloads.DataSource as DataTable; 

    if (dataTable != null) 
    { 
     DataView dataView = new DataView(dataTable); 
     dataTable = dataView.ToTable(); 
     dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 

    caseloads.DataSource = dataView; 
    caseloads.DataBind(); 
    } 
} 

這裏是GridView的我正在使用ASP

<asp:GridView ID="caseloads" runat="server" AutoGenerateColumns="false" GridLines="None" 
           Font-Size="12.5px" BackColor="#FFFFFF" CssClass="mGrid" OnSorting="caseloads_Sorting" AllowSorting="true"> 
           <Columns> 
            <asp:TemplateField HeaderText="Client ID" SortExpression="ClientKey"> 
             <ItemTemplate> 
              <asp:Label ID="clientKey1" runat="server" Text='<%#Eval("ClientKey")%>' /> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Full Name" SortExpression="ConsumerName"> 
             <ItemTemplate> 
              <asp:Label ID="clientKey2" runat="server" Text='<%#Eval("ConsumerName")%>' /> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Program" SortExpression="info"> 
             <ItemTemplate> 
              <asp:Label ID="clientKey3" runat="server" Text='<%#Eval("info")%>' /> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="House" SortExpression="phoneH"> 
             <ItemTemplate> 
              <asp:Label ID="clientKey4" runat="server" Text='<%#Eval("phoneH")%>' /> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Cell" SortExpression="phoneC"> 
             <ItemTemplate> 
              <asp:Label ID="clientKey5" runat="server" Text='<%#Eval("phoneC")%>' /> 
             </ItemTemplate> 
            </asp:TemplateField> 
           </Columns> 
          </asp:GridView>