8

我有一个包含 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 和 EditTemplate。但我觉得这很简单,并想以这种方式进行。那么我可以在这个结构中添加页脚吗? 在此处输入图像描述

4

2 回答 2

13

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

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

注意二:简单的<FooterTemplate>将只包含一个文本框。

<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>

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

于 2013-09-16T04:21:02.150 回答
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>
于 2013-09-15T19:30:46.883 回答