2013-02-26 2 views
0

Я использую GridView и пытаюсь отсортировать его. У меня более 20 строк на моей базе данных, но GridView просто показывает 10.
Я установил AllowPaging=true, но отметив случившееся.
Также я использую AllowSorting = true и OnSorting="GridView_Sorting". Но когда я нажимаю на заголовок, чтобы отсортировать содержимое этого столбца, он не входит в мой OnSorting="GridView_Sorting", он подходит к GridView1_RowCommand, почему?
Иногда это просто дать мне эту ошибку:
Object reference not set to an instance of an object errorСортировка и подкачка Проблемы с GridView

Вот мой код:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" style="font-family: Verdana, Arial, Sans-Serif;" 

    CssClass="gridview" OnSorting="GridView_Sorting" 
    AllowSorting ="True" AllowPaging="True" BackColor="#CCCCCC" 
    BorderStyle="Inset" BorderWidth="2px" BorderColor="GrayText" 
    CellPadding="1" 
    CellSpacing="5" 
    HeaderStyle-HorizontalAlign="Center" 
    OnRowDataBound="GridView1_RowDataBound" 
    ForeColor = "Black" RowStyle-CssClass="gridview" 
    OnRowCommand="GridView1_RowCommand">    
    <AlternatingRowStyle BackColor="#CCCCCC" /> 
     <columns> 
      <asp:BoundField HeaderText="ID" DataField="id" SortExpression="id" /> 
      <asp:BoundField HeaderText="PRIORIDADE" DataField="prioridade" ItemStyle-HorizontalAlign="Center" SortExpression="prioridade" SortExpression="prioridade" /> 
      <asp:BoundField HeaderText="SITUAÇÃO" DataField="situacao" ItemStyle-HorizontalAlign="Center" > 
      <ItemStyle HorizontalAlign="Center" /> 
      </asp:BoundField> 
      <asp:BoundField HeaderText="RESPONSAVEL" DataField="responsavel" HeaderStyle-Width="65px" ItemStyle-HorizontalAlign="Center"> 
      <HeaderStyle Width="65px" /> 
      <ItemStyle HorizontalAlign="Center" /> 
      </asp:BoundField> 
      <asp:BoundField HeaderText="DATA DE CADASTRO" DataField="dt_cadastro" SortExpression="dt_cadastro" DataFormatString="{0:dd/MM/yyyy}" HeaderStyle-Width="60px"ItemStyleHorizontalAlign="Center" > 
      <HeaderStyle Width="60px" /> 
      <ItemStyle HorizontalAlign="Center" /> 
      </asp:BoundField> 
      <asp:BoundField HeaderText="PREVISÃO DE TÉRMINO" DataField="previsao_termino" DataFormatString="{0:dd/MM/yyyy}" HeaderStyle-Width="60px" 
      ItemStyle-HorizontalAlign="Center"> 
      <HeaderStyle Width="60px" /> 
      <ItemStyle HorizontalAlign="Center" /> 
      </asp:BoundField> 
      <asp:BoundField HeaderText="PROJETO" DataField="projeto" ItemStyle-HorizontalAlign="Center"></asp:BoundField> 
      <asp:BoundField HeaderText="FUNCIONALIDADE" DataField="funcionalidade" ItemStyle-HorizontalAlign="Center" /> 
      <asp:BoundField HeaderText="CLUBE" DataField="clube" ItemStyle-HorizontalAlign="Center" /> 
      <asp:TemplateField HeaderStyle-Width="70px" HeaderText="VISUALIZAR" > 
      <ItemTemplate> 
      <asp:Button ID="Btn_Visualizar" runat="server" Text="VISUALIZAR" CssClass="Btn_Grid" Font-Size="7pt" Font-Names="Verdana, Arial" OnClick="Btn_Visualizar_Click"CommandName="visualizar" CommandArgument="<%# ((GridViewRow)Container).RowIndex %>" />        
      </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderStyle-Width="66px" HeaderText="ALTERAR"> 
      <ItemTemplate> 
      <asp:Button ID="Btn_Alterar" runat="server" Text="ALTERAR" CssClass="Btn_Grid" Font-Size="7pt" Font-Names="Verdana, Arial"CommandName="editar" CommandArgument="<%# ((GridViewRow)Container).RowIndex %>" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderStyle-Width="66px" HeaderText="FEEDBACK"> 
     <ItemTemplate> 
     <asp:Button ID="Btn_Feedback" runat="server" Text="ADICIONAR" CssClass="Btn_Grid" Font-Size="7pt" Font-Names="Verdana,Arial"CommandName="feedback" CommandArgument="<%# ((GridViewRow)Container).RowIndex %>" /> 
     </ItemTemplate> 
     </asp:TemplateField> 
     </columns> 

Мой CodeBehind:

protected void GridView_Sorting(object sender, GridViewSortEventArgs e) 
     { 
      string[] strSortExpression = ViewState["SortExpression"].ToString().Split(' '); 

      // If the sorting column is the same as the previous one, 
      // then change the sort order. 
      if (strSortExpression[0] == e.SortExpression) 
       { 
       if (strSortExpression[1] == "ASC") 
       { 
        ViewState["SortExpression"] = e.SortExpression + " " + "DESC"; 
       } 
       else 
       { 
        ViewState["SortExpression"] = e.SortExpression + " " + "ASC"; 
       } 
      } 
       // If sorting column is another column, 
       // then specify the sort order to "Ascending". 
      else 
      { 
       ViewState["SortExpression"] = e.SortExpression + " " + "ASC"; 
      } 
      // Rebind the GridView control to show sorted data. 
      GridView1.DataSource = ch.BuscaTodosChamados(); 
      GridView1.DataBind(); 
     } 

ответ

0

Добавить атрибут SortExpression для каждого сортируемого столбца, информируя свой DataField.

+0

Я обновил свой код несколько минут назад ... Я уже это сделал, а затем он переходит в «GridView_Sorting», который я установил в событии OnSorting ... Он подходит к событию «RowCommand». Зачем ? – Ghaleon

+0

Это обычное поведение любого события щелчка GridView. Вам решать проверить, какая команда запустила событие (используя свойство CommandName). Однако это не мешает вам сортировать сетку. Сразу после прохождения события RowCommand будет вызываться событие Сортировка. – lockdown87

+0

Я обновил свой вопрос, посмотрю мой код ... Он все еще не сортируется = \ – Ghaleon