2012-04-19 2 views
2

私は、いくつかのチェックボックスとフッターを持つtelerikコントロールを使ってradgridを設計しました。radgrid thourghチェックボックスの選択でフッタを更新

<telerik:RadGrid ID="RadGridCustomers" runat="server" 
        AutoGenerateColumns="False" CellSpacing="0" GridLines="None" 
        Height="300px" ShowFooter="true"> 
    <HeaderTemplate> 
       <asp:CheckBox ID="chkSelectAll" runat="server" 
        OnCheckedChanged="ToggleSelectedState" AutoPostBack="true" /> 
    </HeaderTemplate> 

     <ItemTemplate> 
      <asp:CheckBox ID="CheckBoxSelectedCustomer" runat="server" 
     OnCheckedChanged="ToggleRowSelection"/> 
     </ItemTemplate> 
     <ItemStyle Width="25px" Wrap="true" /> 
     <HeaderStyle Width="25px" /> 
    </telerik:GridTemplateColumn> 
    <telerik:GridBoundColumn DataField="Customers_Id" 
     FilterControlAltText="Filter column column" HeaderText="Id" 
     UniqueName="column" Visible="true"> 

    </telerik:GridBoundColumn> 
    <telerik:GridBoundColumn DataField="NominatedLoad" 
     FilterControlAltText="Filter column1 column" HeaderText="Nominated MW" 
     UniqueName="NominatedLoad" Aggregate="Sum"> 
      <HeaderStyle Wrap="true" Width="75px" HorizontalAlign="Center" /> 
     <ItemStyle Width="75px" /> 
    </telerik:GridBoundColumn> 

だからわかるように、私はID、名前(ここにコードを入れなかった、不要だと思った)、指名されたフィールドを持っています。ノミネートされたフィールドには集約属性があります。デフォルトでは、グリッド内のすべてのチェックボックスをオンにしてグリッドを読み込みます。さて、問題は、ユーザーがチェックボックスのチェックを外すたびに、フッターの値を自動的に更新する必要があることです。だから、私はこのイベントに

protected void ToggleRowSelection(object sender, EventArgs e) 
    { 
     ((sender as CheckBox).NamingContainer as GridItem).Selected = (sender as 
      CheckBox).Checked; 
     GridFooterItem footer = (GridFooterItem) 
        RadGridCustomers.MasterTableView.GetItems(GridItemType.Footer)[2]; 
     int totalLoad = Convert.ToInt32(footer["ActualLoad"].Text.Split(':')[1]); 
     CheckBox chk = FindControl("CheckBoxSelectedCustomer") as CheckBox; 
     foreach (GridDataItem data in RadGridCustomers.MasterTableView.Items) 
     { 
      if (chk.Checked == true) 
      { 
       //footer["ActualLoad"].Text = footer.Attributes.Add('Aggregate',     } 
     } 

を書き始めたが、ブロックはあなたが私がこれを終了する方法を教えてくださいrow.canフッターを更新する方法を知らない場合、私は一種の一番下に打たれました。

また、親切に私はこのような状況はjqueryのを使用してやC#で行わ戸部を必要とするかどうかを知っている?(私はTE最良の方法を意味する)

答えて

0

はい、それは可能です! あなたはカスタムとして集計を入れなければなりません!そして、この2機能(彼らは一例であり、それにあなたのコードを修正してください)

Public void RgDueBalance_CustomAggregate(object sender, GridCustomAggregateEventArgs e) 
     { 
      e.Result = 0; 
     } 
     protected void CheckBox1_Changed(object sender, EventArgs e) 
     { 
      GridFooterItem footerItem = rgDueBalance.MasterTableView.GetItems(GridItemType.Footer)[0] as GridFooterItem; 
      double pageSum = double.Parse(footerItem["MontMI"].Text.Replace("Total:", "")); 
      CheckBox checkBox = sender as CheckBox; 
      GridDataItem dataItem = checkBox.NamingContainer as GridDataItem; 
      double value = double.Parse(dataItem["MontMI"].Text); 

      if (checkBox.Checked) 
      { 
       pageSum += value; 
      } 
      else 
      { 
       pageSum -= value; 
      } 
      footerItem["MontMI"].Text = "Total: " + pageSum; 
     } 

を使用してこれが行うことは、あなたが1つのチェックボックスをチェックするとき、それはチェックを外すために値、または反対を合計です。 あなたのお役に立てば幸いです!

+0

MontMIとは何ですか? –

関連する問題