读书人

gridview 通过objectdatasource绑定到

发布时间: 2013-11-05 14:40:42 作者: rapoo

gridview 通过objectdatasource绑定到datatable,datatable中有一个合计行,如何让该行不参与排序
gridview 通过objectdatasource绑定到datatable,datatable中有一个合计行,如何让该行不参与排序
[解决办法]
页脚数据不要放在DataTable中,应该单独将合计行的数据插入页脚。

你可以自己从GridView继承,并开发成自己的GridView控件。
[解决办法]

引用:
gridview 通过objectdatasource绑定到datatable,datatable中有一个合计行,如何让该行不参与排序


让它排序也可以呀,就想办法让它排在最后就可以啦,不知道你是什么写的sql语句?

这样做排序
order by case when col1 is null when 1 else 0 end,col1
col1为排序列
[解决办法]
将GridView的ShowFooter属性设置为true,将OnDataBound属性设置为事件处理的函数名,例如:
    <asp:GridView ID="gvProd" runat="server" DataSourceID="sdsProd" AllowPaging="true" PageSize="20"
OnDataBound="CountTotalPrice" AutoGenerateColumns="false" ShowFooter="true">
<HeaderStyle BackColor="Black" ForeColor="White" Font-Bold="true" />
<FooterStyle BackColor="Black" ForeColor="White" Font-Bold="true" />
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" />
<asp:BoundField DataField="UnitPrice" HeaderText="Price" />
<asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" />
</Columns>
</asp:GridView>

当gvProd所有行数据绑定完毕后调用CountTotalPrice函数,CountTotalPrice函数代码如下
    protected void CountTotalPrice(object sender, EventArgs e)
{
decimal totalValue = 0;

foreach (GridViewRow row in gvProd.Rows)
{
decimal price = Decimal.Parse(row.Cells[2].Text);
int count = int.Parse(row.Cells[3].Text);
totalValue += price * count;
}

GridViewRow footer = gvProd.FooterRow;
footer.Cells[0].ColumnSpan = 3;
footer.Cells[0].HorizontalAlign = HorizontalAlign.Center;

footer.Cells.RemoveAt(1);
footer.Cells.RemoveAt(2);

footer.Cells[0].Text = "Total value (on this page): " + totalValue.ToString();
}

读书人网 >asp.net

热点推荐