我有一个有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>
当我尝试以下操作时,commandfield有一个错误,即不支持此元素.
<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.但我发现这很简单,并希望以这种方式进行.那么我可以在这个结构中添加一个页脚.
解决方法
对的,这是可能的.但这需要使用< FooterTemplate>在里面< TemplateField>.对每个列使用TemplateFields,并为每个列设置FooterTemplate.
注意:ID列似乎是主键.因此,删除< FooterTemplate>来自相应的< TemplateField>如果ID是主键或数据库中的自动生成字段,则为ID列定义.
注2:< FooterTemplate>只需包含一个TextBox.
<Columns> <asp:TemplateField> <EditItemTemplate> <asp:LinkButton ID="lnkBtnUpdate" runat="server" CausesValidation="True" CommandName="Update" Text="Update"></asp:LinkButton> <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> <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事件,也可以处理Insert按钮的OnClick事件.