0

こんにちは、他のトピックのこの画像の例のように、結果を展開および折りたたむことができるフッターテンプレートを作成したいと思います: How do I add FooterTemplate to GridView with BoundFields

デフォルトで1つの結果を表示したいのですが、フッターテンプレートのアイコンをクリックすると、4または5などの結果がさらに表示され、コードを表示できます。よろしくお願いします。

4

2 に答える 2

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();
        }
    }
于 2013-07-19T11:33:46.157 に答える
0

簡単だろう

  1. GridView で「AllowPaging」を有効にします。
  2. ページング行を非表示にします。
  3. アイコンをクリックするたびに、展開する場合は「PageSize」を増やし、別のアイコンをクリックすると折りたたむ場合は「PageSize」を減らします。
于 2013-07-19T10:48:01.643 に答える