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

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

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

【问题讨论】:

    标签: c# asp.net gridview expand collapse


    【解决方案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】:

    这很容易

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 2019-01-21
      • 2017-12-14
      • 2015-12-25
      • 2014-09-12
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多