2012-03-07 6 views
2

私はこれをGridViewとし、PremiseScoreスコア(3列目)のフッタの合計を追加したいと思います。グリッドビューで1列分の要約行を追加

どうすればいいですか?

  <asp:BoundField DataField="PremiseUno" HeaderText='<%$ Resources:Language, grdPremiseUno %>' ReadOnly="True" SortExpression="PremiseUno" > 
         <HeaderStyle CssClass="gHeaderStyle" /> 
         <ItemStyle CssClass="gControlStyle" /> 
         </asp:BoundField> 

         <asp:BoundField DataField="PremiseName" HeaderText='<%$ Resources:Language, grdPremisesName %>' 
          ReadOnly="True" SortExpression="grdPremisesName" > 
          <HeaderStyle CssClass="gHeaderStyle" /> 
         <ItemStyle CssClass="gControlStyle" /> 
         </asp:BoundField> 

         <asp:BoundField DataField="PremiseScore" HeaderText='<%$ Resources:Language, grdPremiseScore %>' ReadOnly="True" SortExpression="PremiseScore" > 
         <HeaderStyle CssClass="gHeaderStyle" /> 
         <ItemStyle CssClass="gControlStyle" /> 
         </asp:BoundField> 

       <asp:TemplateField ShowHeader="False" HeaderText= '<%$ Resources:Language, btnDelete %>'> 
        <ItemTemplate> 
         <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
          CommandName="Delete" Text="Delete" CommandArgument='<%# Eval("PremiseUno") %>' onclick="LinkButton1_Click"></asp:LinkButton> 
        </ItemTemplate> 
       </asp:TemplateField> 



      </Columns> 
+2

ここにこれを実装する方法に関するチュートリアルがあります:http://msdn.microsoft.com/en-us/library/bb310552.aspx C#またはVB.NETを使用していますか?基本的には、RowDataBoundイベントを実装し、PremiseScore列の実行中の合計を保持する必要があります。 – jmaglio

答えて

2

テンプレートフィールドにバインドされたフィールドを変換する場合は、前提スコアの値を保持制御にアクセスすることができます。

<asp:TemplateField HeaderText="test"> 
    <ItemTemplate> 
     <asp:Label runat="server" ID="testLabel" Text='<%# Eval("PremiseScore") %>'></asp:Label> 
    </ItemTemplate>    
</asp:TemplateField> 

それから計算するには、次の操作を行うことができますグリッドビューのデータバインドイベントの合計:

protected void Grid_DataBound(Object sender, EventArgs e) 
{ 
    GridViewRow footerRow = grid.FooterRow; 
    var sum = (from GridViewRow row in grid.Rows select ((Label)row.FindControl("testLabel")).Text).Sum(d => Convert.ToInt16(d)); 

    footerRow.Cells[0].Text = sum.ToString(); 
} 

ここでは、すべての値がintであると仮定しますが、他の値型に簡単に変換できます。

関連する問題