【问题标题】:updating footer in radgrid thourgh checkbox selection通过复选框选择更新 radgrid 中的页脚
【发布时间】:2012-04-19 15:16:30
【问题描述】:

我使用 Telerik 控件设计了一个 radgrid,它有一些复选框和一个页脚。

 <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',                 }
        }

但是如果块不知道​​如何更新页脚行,我有点被击中了。请告诉我如何完成这个。

另外,请告诉我这种情况是否需要使用 jquery 或 C# 来完成?(我的意思是最好的方法)

【问题讨论】:

    标签: c# radgrid


    【解决方案1】:

    是的,这是可能的! 你必须把聚合作为自定义!并使用这 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;
            }
    

    当您选中一个复选框时,它的作用是对值求和,反之则为取消选中。 希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多