2016-12-20 5 views
1

AspxGridViewを使用してレコードを表示するコードを作成しました。今私は、フッターとグループ化の合計(Column_Name)、カウント(Column_Name)を表示したいと思います。ダイナミックバインディングを使用してAspxGridViewでフッターサマリーとグループサマリを実行する方法

これは私のコードです:

<dx:ASPxGridView ID="ASPxGridView1" runat="server" > 
        <SettingsPager PageSize="50"> 
        </SettingsPager> 
        <Settings ShowFilterRow="True" ShowGroupPanel="True" ShowFooter="True" ShowGroupFooter="VisibleIfExpanded" /> 
        <SettingsCommandButton> 
         <ShowAdaptiveDetailButton ButtonType="Image"></ShowAdaptiveDetailButton> 

         <HideAdaptiveDetailButton ButtonType="Image"></HideAdaptiveDetailButton> 
        </SettingsCommandButton> 
        <SettingsDataSecurity AllowDelete="False" AllowEdit="False" AllowInsert="False" /> 
        <SettingsSearchPanel Visible="True" /> 
       </dx:ASPxGridView> 

C#コード:

protected void Page_Load(object sender, EventArgs e) 
{ 
if (IsPostBack) 
     { 
      ASPxGridView1.Visible = true; 
      string cs = ConfigurationManager.ConnectionStrings["HQMatajerConnectionString"].ConnectionString; 
      whereQuery = getWhereQuery(); 
      using (SqlConnection con = new SqlConnection(cs)) 
      { 
       string querysss = "select "+txtSelectedColumn.Text+ @" 
          FROM  [HQMatajer].[dbo].[Transaction] as transactions 
          RIGHT JOIN [HQMatajer].[dbo].[TransactionEntry] as transactionsEntry 
          ON transactions.TransactionNumber=transactionsEntry.TransactionNumber 
          INNER JOIN [HQMatajer].[dbo].[Item] as items 
          ON transactionsEntry.ItemID=items.ID 
          INNER JOIN [HQMatajer].[dbo].[Supplier] as suppliers 
          ON items.SupplierID=suppliers.ID 
          LEFT JOIN [HQMatajer].[dbo].[Department] as departments 
          ON departments.ID=items.DepartmentID 
          LEFT JOIN [HQMatajer].[dbo].[Category] as categories 
          ON categories.ID=items.CategoryID 
          where " + txtQuery.Text; 

       SqlCommand cmd = new SqlCommand(); 

       cmd.Connection = con; 
       cmd.CommandText = querysss; 
       con.Open(); 

       SqlDataAdapter sda = new SqlDataAdapter(cmd); 

       sda.Fill(ds); 

       ASPxGridView1.AutoGenerateColumns = true; 
       ASPxGridView1.DataSource = ds; 
       ASPxGridView1.DataBind(); 
      } 
     } 

あなたはその私のSQLクエリ文を気づくことができます。そのユーザーは、表示する列のみを決定します。 selectステートメントでPrice column_nameを選択した場合。ユーザーがグループ化する場合は、すべてのレコードとグループ化のためにフッタにsum(price)を表示する必要があります。

+0

おそらくLINQ to Entitiesを使用し始めますか?エンティティフレームワーク –

答えて

0

C#コードでサマリーアイテムを追加し、すべてのポストバックでフィールド名を変更できます。例えばフッターの要約

ASPxSummaryItem gs = new ASPxSummaryItem(); 
gs.FieldName = txtSelectedColumn.Text; 
gs.SummaryType = DevExpress.Data.SummaryItemType.Sum; 
this.ASPxGridView1.TotalSummary.Add(gs); 

フィールド名が変更されない場合は、古い要約を削除して、必要な列で毎回新しい要約を追加することができます。また、すべてのグループサマリーについても同じことができます。これらを確認することもできますhttps://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridView_GroupSummarytopichttps://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridView_TotalSummarytopic

関連する問題