【发布时间】:2016-03-30 19:37:20
【问题描述】:
不敢相信我不得不问这个问题 - 您会认为这样一个基本功能很容易实现,但我在为 Gridview 创建页脚时遇到了麻烦。我查看了各种教程和其他问题,例如here、here 和here,但仍然遇到困难。
问题在于正确显示页脚(即没有添加额外的空列)。根据我收集的信息,您需要将 FooterTemplate 放在 TemplateField 标记中,否则它将不起作用 - 至少它不会为我编译。如果我在 BoundFields 列之后插入它,那么它会添加一个额外的列,这是不可取的。
<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="false" AllowSorting="true"
CellPadding="3" HorizontalAlign="Center" GridLines="both" CssClass="dataTable1"
OnRowDataBound="Colour_Columns" Caption="PARTIAL COMPARE" ShowFooter="true">
<HeaderStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="header" />
<FooterStyle BackColor="Black" ForeColor="AntiqueWhite" Height="30" CssClass="footer" />
<Columns>
<asp:BoundField DataField="FOLDER" HeaderText="Location" />
<asp:BoundField DataField="FILE" HeaderText="File" />
<asp:BoundField DataField="CHECKSUM" HeaderText="Checksum" Visible="false" />
<asp:BoundField DataField="STATUS" HeaderText="Status" />
<asp:BoundField DataField="DATE" HeaderText="Date" Visible="false" />
<asp:TemplateField>
<FooterTemplate>
<asp:Button ID="UpdateButton" runat="server" Text="UPDATE" CssClass="updateButton" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
同样,如果我将它放在 BoundFields 之前,它会在左侧添加一个额外的列。如果我尝试将所有 BoundFields 放在 TemplateField 下,它将无法编译。
如何在不创建额外列的情况下将页脚添加到网格视图?此外,当我们使用它时,如何将其 colspan 设置为 1? (它只会有一个更新按钮,因此页脚中不需要三列。)
配色方案:
protected void Colour_Columns(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.Cells[3].Text == "Match")
e.Row.BackColor = Color.Lime;
if (e.Row.Cells[3].Text == "Mismatch")
e.Row.BackColor = Color.Gold;
if (e.Row.Cells[3].Text == "New File")
e.Row.BackColor = Color.PeachPuff;
}
}
此方法似乎无法识别 ItemTemplate 值...
【问题讨论】:
-
您又添加了一个模板字段,这就是为什么它会在页脚中显示一个带有按钮的额外空列。
-
@CodeRider 是的,但如果我不添加 TemplateField,它将不允许 FooterTemplate...
-
正是您想要的?您在运行时隐藏了几列。如果您要隐藏该列,则页脚将自行隐藏。请详细说明,你想要什么。
-
@CodeRider 正如你所说,校验和和日期列在运行时被隐藏,因为它们更多地用于故障排除/调试目的。就插入数据库表的内容而言,它们也可能参与逻辑。 (自从我写那篇文章以来已经有几个星期了,所以我忘记了,我得回去检查一下。)但与此同时,我不想删除它们。我想要的只是显示页脚而不添加额外的列