如何向 `<asp:GridView>` 添加特殊行?
How to add a special row to `<asp:GridView>`?
我想在 <asp:GridView>
的底部添加一个特殊的行。此行的模板与上面的行不同。我该怎么做?
如果您始终希望 'add' 行位于 table 的底部,则可以使用页脚模板:
<asp:TemplateField>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:TemplateField>
感谢@Alan 和@lzzy。我使用 <FooterTemplate>
.
制作了它
<!-- ASPX -->
<asp:GridView ID="UserGridView" runat="server" AutoGenerateColumns="False" ShowHeaderWhenEmpty="True" OnRowDeleting="UserGridView_OnRowDeleting"
OnRowCommand="UserGridView_OnRowCommand" ShowFooter="true">
<Columns>
<asp:TemplateField HeaderText="Username" ItemStyle-Width="70">
<ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate>
<FooterTemplate>
<asp:TextBox runat="server" ID="NewUsername"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Gender" ItemStyle-Width="70">
<ItemTemplate><asp:Label ID="Gender" runat="server" Text='<%# Bind("Gender") %>'/></ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="NewGender" runat="server" >
<asp:ListItem>Male</asp:ListItem>
<asp:ListItem>Female</asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" Text="Delete" CommandName="Delete"/>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="AddUserButton" runat="server" Text="Add" CommandName="Add"/>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
// CSS
protected void UserGridView_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Add")
{
TextBox newUsername = (TextBox) UserGridView.FooterRow.FindControl("NewUsername");
DropDownList newGender = (DropDownList)UserGridView.FooterRow.FindControl("NewGender");
AddUser(newGender.SelectedValue, newUsername.Text);
BindUserData();
}
}
protected void UserGridView_OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
string username = e.Values["Username"].ToString();
string gender = e.Values["Gender"].ToString();
DeleteUser(gender, username);
BindUserData();
}
我遇到的一些其他问题以及解决这些问题的关键。以防有人需要。
如何绑定数据到<asp:Label>
?
使用 <%# Bind("DataFieldName") %>
.
示例:
<ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate>
为什么页脚不显示?
在 <asp:GridView>
.
中设置 ShowFooter="true"
如何获取页脚控件的引用?
示例:
TextBox newUsername = (TextBox)UserGridView.FooterRow.FindControl("NewUsername");
如何绑定AddUserButton为默认按钮?
示例:
MainForm.DefaultButton = UserGridView.FooterRow.FindControl("AddUserButton").UniqueID;
我想在 <asp:GridView>
的底部添加一个特殊的行。此行的模板与上面的行不同。我该怎么做?
如果您始终希望 'add' 行位于 table 的底部,则可以使用页脚模板:
<asp:TemplateField>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:TemplateField>
感谢@Alan 和@lzzy。我使用 <FooterTemplate>
.
<!-- ASPX -->
<asp:GridView ID="UserGridView" runat="server" AutoGenerateColumns="False" ShowHeaderWhenEmpty="True" OnRowDeleting="UserGridView_OnRowDeleting"
OnRowCommand="UserGridView_OnRowCommand" ShowFooter="true">
<Columns>
<asp:TemplateField HeaderText="Username" ItemStyle-Width="70">
<ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate>
<FooterTemplate>
<asp:TextBox runat="server" ID="NewUsername"></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Gender" ItemStyle-Width="70">
<ItemTemplate><asp:Label ID="Gender" runat="server" Text='<%# Bind("Gender") %>'/></ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="NewGender" runat="server" >
<asp:ListItem>Male</asp:ListItem>
<asp:ListItem>Female</asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" Text="Delete" CommandName="Delete"/>
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="AddUserButton" runat="server" Text="Add" CommandName="Add"/>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
// CSS
protected void UserGridView_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Add")
{
TextBox newUsername = (TextBox) UserGridView.FooterRow.FindControl("NewUsername");
DropDownList newGender = (DropDownList)UserGridView.FooterRow.FindControl("NewGender");
AddUser(newGender.SelectedValue, newUsername.Text);
BindUserData();
}
}
protected void UserGridView_OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
string username = e.Values["Username"].ToString();
string gender = e.Values["Gender"].ToString();
DeleteUser(gender, username);
BindUserData();
}
我遇到的一些其他问题以及解决这些问题的关键。以防有人需要。
如何绑定数据到<asp:Label>
?
使用 <%# Bind("DataFieldName") %>
.
示例:
<ItemTemplate><asp:Label ID="Username" runat="server" Text='<%# Bind("Username") %>'/> </ItemTemplate>
为什么页脚不显示?
在 <asp:GridView>
.
ShowFooter="true"
如何获取页脚控件的引用?
示例:
TextBox newUsername = (TextBox)UserGridView.FooterRow.FindControl("NewUsername");
如何绑定AddUserButton为默认按钮?
示例:
MainForm.DefaultButton = UserGridView.FooterRow.FindControl("AddUserButton").UniqueID;