0

私は a を使用していて、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

これが私のコードです:

<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>

私の分離コード:

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();
        }
4

1 に答える 1

0

ソート可能な列ごとに SortExpression 属性を追加し、その DataField に通知します。

于 2013-02-26T14:30:44.873 に答える