如何使用展开和折叠数据行的选项将页脚模板添加到 gridview?C#/ASP.NET

Posted

技术标签:

【中文标题】如何使用展开和折叠数据行的选项将页脚模板添加到 gridview?C#/ASP.NET【英文标题】:How do i add footertemplate to gridview with option for expand and collapse datarows?C#/ASP.NET 【发布时间】:2013-07-18 13:23:20 【问题描述】:

您好,我想制作一个可以展开和折叠结果的页脚模板,如其他主题中的此图像示例:How do I add FooterTemplate to GridView with BoundFields

我想要默认显示 1 结果,在单击页脚模板上的图标后显示更多结果,例如 4 或 5,我可以显示代码,提前致谢。

【问题讨论】:

【参考方案1】:

我在我的项目中所做的工作相同!我在这里粘贴那个工作。请通过它,它可能会帮助你解决你的问题 ASPX:

<asp:GridView Width="100%" border="1" ID="gwProfit" RowStyle-Wrap="true" runat="server" AutoGenerateColumns="false" AlternatingRowStyle-CssClass="alternaterow" RowStyle-VerticalAlign="Bottom" ShowFooter="True" HeaderStyle-Wrap="true" OnRowCommand="gwProfit_RowCommand" OnRowDataBound="gwProfit_RowDataBound">
    <Columns>
    <asp:TemplateField HeaderText="Start Date">
    <ItemTemplate>
    <div class="input-append">
    <asp:TextBox class="input_disabled" ID="txtStartDate" runat="server" Width="110px"  Height="22px" Text='<%# Bind("StartDate","0") %>'>
    </asp:TextBox>
     <button class="btn123" ID="ImgStartDate" runat="server" type="button" style="height:25px;">
     <i class="icon-calendar"></i>
     </button>
     </div>
           <ajaxToolkit:CalendarExtender ID="StartDate" runat="server" TargetControlID="txtStartDate" PopupButtonID="ImgStartDate" Format="dd-MMM-yyyy">
            </ajaxToolkit:CalendarExtender>
             </ItemTemplate>
             <FooterTemplate>
            <asp:TextBox class="input_disabled" ID="txtNewStartDate" runat="server" Width="110px"  Height="22px">
            </asp:TextBox>
            <button class="btn123" ID="ImgStartDate" runat="server" type="button" style="height:25px;">
            <i class="icon-calendar"></i>
            </button>
            </div>

            <ajaxToolkit:CalendarExtender ID="StartDate" runat="server" TargetControlID="txtNewStartDate" 
            PopupButtonID="ImgStartDate" Format="dd-MMM-yyyy">
            </ajaxToolkit:CalendarExtender>
            </FooterTemplate>
           </asp:TemplateField>

         <asp:TemplateField HeaderText="End Date">
         <ItemTemplate> 
                       <asp:TextBox class="input_disabled" ID="txtEndDate" runat="server" Width="110px"  Height="22px" Text='<%# Bind("EndDate","0") %>'>

                    </asp:TextBox>
                    <button class="btn123" ID="ImgEndDate" runat="server" type="button" style="height:25px;">
                    <i class="icon-calendar"></i>
                    </button>
                    <ajaxToolkit:CalendarExtender ID="EndDate" runat="server" TargetControlID="txtEndDate" 
                    PopupButtonID="ImgEndDate" Format="dd-MMM-yyyy">
                    </ajaxToolkit:CalendarExtender>                                  
        </ItemTemplate>
        <FooterTemplate>                       
         <asp:TextBox class="input_disabled" ID="txtNewEndDate" runat="server" Width="110px"  Height="22px">
                    </asp:TextBox>
                    <button class="btn123" ID="ImgEndDate" runat="server" type="button" style="height:25px;">
                    <i class="icon-calendar"></i>
                    </button>

                    <ajaxToolkit:CalendarExtender ID="EndDate" runat="server" TargetControlID="txtNewEndDate" 
                    PopupButtonID="ImgEndDate" Format="dd-MMM-yyyy">
                    </ajaxToolkit:CalendarExtender> 
        </FooterTemplate>
        </asp:TemplateField>

  <asp:TemplateField HeaderText="Profit Per Unit">
  <ItemTemplate>
<asp:TextBox class="input_disabled" ID="txtProfitPerUnit" Width="100px"  Height="22px" runat="server" Text='<%# Bind("ProfitPerUnit","0") %>'> </asp:TextBox>
  </ItemTemplate>
 <FooterTemplate>
 <asp:TextBox class="input_disabled" ID="txtNewProfitPerUnit" Width="100px" Height="22px" runat="server" Text="0"/>                
 </FooterTemplate>
 </asp:TemplateField>

  <asp:TemplateField HeaderText="Action" ControlStyle-Width="14px" FooterStyle-Width="14px">
   <ItemTemplate>
     <input type="hidden" id="txtrec_status" name="txtrec_status" runat="server"/>

<asp:ImageButton ID="btnDelete" runat="server" CommandName="Delete" ImageUrl="~/images/delete.gif" AlternateText="Delete" CommandArgument="<%# ((GridViewRow) Container).RowIndex%>" UseSubmitBehavior="False" />
      </ItemTemplate>
      <FooterTemplate>
       <asp:ImageButton ID="btnAdd" runat="server" CommandName="Add" ImageUrl="~/images/add.png" AlternateText="Add" UseSubmitBehavior="False"/>
        </FooterTemplate>
        </asp:TemplateField>
             </Columns>
             </asp:GridView>

代码隐藏:

protected void gwProfit_RowCommand(object sender, GridViewCommandEventArgs e)
    
if (ViewState["dtStartDate"] != null)
             dtStartDate = (DataTable) ViewState["dtStartDate"];

        if (e.CommandName.Equals("Add"))
        
            TextBox txtStartDate = (TextBox)gwProfit.FooterRow.FindControl("txtNewStartDate");
            TextBox txtEndDate = (TextBox)gwProfit.FooterRow.FindControl("txtNewEndDate");
            TextBox txtProfitPerUnit = (TextBox)gwProfit.FooterRow.FindControl("txtNewProfitPerUnit");
            if (txtEndDate.Text == "" || txtStartDate.Text == "" || txtProfitPerUnit.Text == "")
            
                ScriptManager.RegisterStartupScript(this, GetType(), "alert", "alert('Please Select Start Date, End Date And Profit Per Unit.')", true);
            
            else
            
                dtStartDate.Rows.Add(dtStartDate.NewRow());
                dtStartDate.Rows[dtStartDate.Rows.Count - 1]["CurrencyDeatailID"] = -2;
                dtStartDate.Rows[dtStartDate.Rows.Count - 1]["StartDate"] = objFunc.toDate(txtStartDate.Text);
                dtStartDate.Rows[dtStartDate.Rows.Count - 1]["EndDate"] = objFunc.toDate(txtEndDate.Text);
                dtStartDate.Rows[dtStartDate.Rows.Count - 1]["ProfitPerUnit"] = objFunc.toDecimal(txtProfitPerUnit.Text);
                if (dtStartDate.Rows.Count >= 0&&dtStartDate.Rows[0]["CurrencyDeatailID"].ToString()=="-1")
                
                    dtStartDate.Rows[0].Delete();
                    if (dtStartDate.Rows.Count > 0 && dtStartDate.Rows[0].RowState == DataRowState.Deleted)
                        dtStartDate.Rows.RemoveAt(0);

                
                ViewState["dtStartDate"] = dtStartDate;
                Profit_LoadGrid();
            
        
        else if (e.CommandName.Equals("Delete"))
        
            int index = objFunc.toInt(e.CommandArgument.ToString());
            GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
            int RemoveAt = gvr.RowIndex;
            DataTable dt = new DataTable();
            dt = (DataTable)ViewState["dtStartDate"];
            dt.Rows.RemoveAt(RemoveAt);
            dt.AcceptChanges();
            ViewState["dtStartDate"] = dt;
            Profit_LoadGrid();
        
    

【讨论】:

你的解决方案我有一些错误,你能发送它功能吗? 很高兴看到您解决了错误!如果对您有帮助,请将答案标记为“已接受的答案”!干杯! :) @Erased【参考方案2】:

这很容易

    在您的 GridView 中激活“AllowPaging”。 使分页行不可见。 每次点击一个图标时,增加“PageSize”以展开或点击另一个图标减少“PageSize”以折叠。

【讨论】:

以上是关于如何使用展开和折叠数据行的选项将页脚模板添加到 gridview?C#/ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

将页脚添加到部分的开始/标题页

如何将页脚添加到 NavigationView - Android 支持设计库?

如何将页脚视图添加到 SwiftUI 中的列表?

如何加入不同大小的图像 - 将页脚图像添加到所有图像(批量)

无法将页脚添加到集合视图

可以将页脚添加到 MVCContrib 网格吗?