无法相信我必须要问这个问题 - 您认为这样的基本功能可以直接实现,但是我无法为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之前,它会在左边添加一个额外的列。如果我尝试将所有BoundField放在TemplateField下,它将无法编译。
如何在不创建额外列的情况下将页脚添加到gridview?此外,当我们在它时,我怎么能将它的colspan设置为1? (它只有一个Update按钮,因此页脚中不需要三列。)
色彩方案方法:
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值......
答案 0 :(得分:3)
尝试仅对最后一列使用模板字段,在该列中可以指定ItemTemplate和FooterTemplate。请尝试下面的代码。
<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:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="StatusLabel" runat="server" Text='<%# Eval("STATUS") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:Button ID="UpdateButton" runat="server" Text="UPDATE" CssClass="updateButton" />
</FooterTemplate>
</asp:TemplateField>
<asp:BoundField DataField="DATE" HeaderText="Date" Visible="false" />
</Columns>
</asp:GridView>
我更改了Cs文件以从模板字段中读取值。请重新复制ASPX,因为我通过向Label添加ID
来更改它CS:
protected void Colour_Columns(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label StatusLabel = e.Row.FindControl("StatusLabel") as Label;
if (StatusLabel.Text == "Match")
e.Row.BackColor = Color.Lime;
if (StatusLabel.Text == "Mismatch")
e.Row.BackColor = Color.Gold;
if (StatusLabel.Text == "New File")
e.Row.BackColor = Color.PeachPuff;
}
}
答案 1 :(得分:2)
您不应将FooterTemplate
与BoundField
一起使用。页脚模板应与TemplateField
一起使用。此外,页脚模板应用每列,这样就可以在您拥有数字的情况下聚合gridview底部的总计数据
以下是在第一列中使用带有页脚字段的模板字段的示例,您可以根据需要对其进行更改以满足您的需求:
<强> ASPX:强>
<asp:GridView ID="gridview1" runat="server" AutoGenerateColumns="false" ShowFooter="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblFolder" runat="server" Text='<%# Eval("FOLDER") %>' />
</ItemTemplate>
<FooterTemplate>
Footer content displayed under FOLDER, notice no extra column!
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblFile" runat="server" Text='<%# Eval("FILE") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblCheck" runat="server" Text='<%# Eval("CHECKSUM") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<强>结果:强>
或者,您可以坚持使用BoundFields并在代码中动态添加页脚:
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
var footer = new Label();
footer.Text = "Footer content";
//Footer will be displayed under the *first* column
e.Row.Cells[0].Controls.Add(footer);
}
}
答案 2 :(得分:0)
如何编码此表单:
购买订购大师
[lblPONumberH]
PO编号://这里是textBox // RequireField
PO日期://这里是带有日历扩展程序的文本框
供应商://这是下拉列表
创建者://这里是文本框
保存//按钮取消//按钮
网格视图
项目描述预算编号数量UOM价格
数据绑定DataBound DataBound DataBound DataBound编辑&amp; Del btn
在页脚样式
txtItemDescription ddlBnumber txtQuantity ddlUOM txtPrice AddBtn