如何在gridview中添加页脚

时间:2013-09-15 16:15:21

标签: asp.net

我有一个包含3列的网格 - 编辑,ID,电影。我想添加一个带有插入链接按钮的页脚,分别是2个文本框,但无法这样做。是否可能。

ASPX:

 <asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="False"     
 OnRowEditing="gridview1_RowEditing" 
 OnRowCancelingEdit="gridview1_RowCancelingEdit"
    ShowFooter="true" >
    <Columns>
     <asp:CommandField ShowEditButton="true" ShowDeleteButton="true" />
      <asp:BoundField DataField="id" HeaderText="ID" />
      <asp:BoundField DataField="movie" HeaderText="MOVIE" />
     </Columns>
</asp:GridView>

当我尝试以下操作时,命令字段出错,表示不支持此元素。

<Columns>
 <asp:TemplateField>
  <ItemTemplate>
    <asp:CommandField ShowEditButton="true" ShowDeleteButton="true" />
  </ItemTemplate>
 <FooterTemplate>
    <asp:LinkButton ID="lnkInsert" runat="server" Text="Insert"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateField>
</columns>

另一种方法是使用itemTemplate&amp;每个列控件的EditTemplate。但我发现这很简单,并希望以这种方式进行。那么我可以在这个结构中添加一个页脚。 enter image description here

2 个答案:

答案 0 :(得分:11)

是的,有可能。但这需要使用<FooterTemplate>内的<TemplateField>。对每列使用TemplateFields,并为每列设置FooterTemplate

注意: ID列似乎是主键。如果<FooterTemplate>是主键或数据库中的自动生成字段,请从<TemplateField>列定义的相应ID中删除ID

注意II: <FooterTemplate>只包含一个TextBox。

<Columns>
<asp:TemplateField>
    <EditItemTemplate>
          <asp:LinkButton ID="lnkBtnUpdate" runat="server" CausesValidation="True"
                         CommandName="Update" Text="Update"></asp:LinkButton>
                         &nbsp;<asp:LinkButton ID="lnkBtnCancel" runat="server"
                         CausesValidation="False"
                         CommandName="Cancel" Text="Cancel">
          </asp:LinkButton>
    </EditItemTemplate>
    <FooterTemplate>
          <asp:LinkButton ID="lnkBtnInsert" runat="server"  
               CommandName="Insert">Insert</asp:LinkButton>
    </FooterTemplate>
    <ItemTemplate>
          <asp:LinkButton ID="lnkBtnEdit" runat="server" CausesValidation="False"
                          CommandName="Edit" Text="Edit"></asp:LinkButton>
                          &nbsp;<asp:LinkButton ID="lnkBtnDelete" runat="server"
                          CausesValidation="False"
                          CommandName="Delete" Text="Delete">
          </asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="ID">
    <EditItemTemplate>
          <asp:TextBox ID="TextBoxID" runat="server" Text='<%# Bind("ID") %>'>
          </asp:Label>
    </EditItemTemplate>
    <ItemTemplate>
          <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'>
          </asp:Label>
    </ItemTemplate>
    <FooterTemplate>
      <asp:TextBox ID="txtID" runat="server"></asp:TextBox>
    </FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="MOVIE">
    <EditItemTemplate>
          <asp:TextBox ID="TextBoxMovie" runat="server" Text='<%# Bind("Movie") %>'></asp:TextBox>
    </EditItemTemplate>
    <FooterTemplate>
          <asp:TextBox ID="txtMovie" runat="server"></asp:TextBox>
    </FooterTemplate>
    <ItemTemplate>
          <asp:Label ID="Label2" runat="server" Text='<%# Bind("Movie")%>'>
          </asp:Label>
    </ItemTemplate>
</asp:TemplateField>

现在有两种方法可以插入数据。您可以使用GridView OnRowCommand事件,也可以处理“插入”按钮的OnClick事件。

答案 1 :(得分:0)

您无法在TemplateField中放置命令字段。但可以这样做:

<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="False"     
 OnRowEditing="gridview1_RowEditing" 
 OnRowCancelingEdit="gridview1_RowCancelingEdit"
    ShowFooter="true" >
        <Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <!--To fire the OnRowEditing event.-->
            <asp:LinkButton ID="lbEdit" runat="server" CommandName="Edit" 
                Text="Edit">
            </asp:LinkButton>
            <!--To fire the OnRowDeleting event.-->
            <asp:LinkButton ID="lbDelete" runat="server" CommandName="Delete" 
                Text="Delete">
            </asp:LinkButton>
        </ItemTemplate>
        <FooterTemplate>
            <asp:LinkButton ID="lnkInsert" runat="server" Text="Insert"></asp:LinkButton>
        </FooterTemplate>
    </asp:TemplateField> 
        <asp:BoundField DataField="id" HeaderText="ID" />
      <asp:BoundField DataField="movie" HeaderText="MOVIE" />
</Columns>    
</asp:GridView>