DataGrid上怎样实现按列排序功能?

szxzwang 2003-10-20 10:58:30
1.DataGrid上怎样实现按列排序功能?
2.DataGrid上怎样实现“上一页”、“下一页”?
最好有例子?
...全文
100 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoliqi 2003-10-20
  • 打赏
  • 举报
回复
右击datagrid选属性生成器,列的排序字段设上,在排序事件下写排序代码
DetaSet ds=ee;
Dataview dv=ds.tables[0].defaultview;
dv.sort=e.SortExpression;
Datagrid1.datasource=dv;
Datagrid1.databind();


Datagrid1.currentpageindex=e.newpageindex;
wubike 2003-10-20
  • 打赏
  • 举报
回复

PagerStyle-PrevPageText ="上一页"
PagerStyle-NextPageText ="后一页"

//排序功能
public void DataGrid_Sort(Object sender,DataGridSortCommandEventArgs e)
{
ViewState["SortField"] = (string)e.SortExpression;
BindGrid();
}
Public void BindGrid()
{
DataView vi = (DataView) CreateTable();
vi.Sort = (String)ViewState["SortField"];
score.DataSoure = vi;
score.DataBind();
}

.....
<asp:DataGrid id="score" runat="server"
AutoGenerateColumns ="False"
AllowSorting="True"
OnSortCommand="DataGrid_Sort"
>
<Cloumns>
<asp:BoundColumn HeaderText="学号" SortExpression="ID" DataField="ID" />

......
</Cloumns>

完整的例子,.NET SDK 帮助文件里肯定是有的,自己可以好好看看。
ViewState对象用来保持排序的关键字的值,用于页面级别

guoyan19811021 2003-10-20
  • 打赏
  • 举报
回复
http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=B12283DE-DB20-4322-ACCC-12724442808A
srj911 2003-10-20
  • 打赏
  • 举报
回复
分页:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<% @import namespace="system.data"%>
<% @import namespace="system.data.oledb"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language="VB" runat="server">
dim startindex as integer
sub binddata()
dim provider,connstr,sql,database as string
provider="microsoft.jet.oledb.4.0;"
database=server.mappath("chengji.mdb")
connstr="provider="+provider+"data source="+database
sql="select * from fen"
dim cmd as oledbdataadapter
cmd=new oledbdataadapter(sql,connstr)
dim ds as dataset
ds=new dataset
cmd.fill(ds,"fen")
grid1.datasource=ds.tables("fen").defaultview
grid1.databind()
end sub

sub page_load(sender as object,e as eventargs)
if not ispostback then
startindex=0
end if
binddata
end sub
sub changepage(sender as object,e as datagridpagechangedeventargs)
startindex=e.newpageindex*grid1.pagesize
grid1.currentpageindex=e.newpageindex
binddata
end sub
</script>
<body>
<form runat="server">
<asp:datagrid ID="grid1" AllowPaging="true" PageSize="5"
PagerStyle-HorizontalAlign="right"
PagerStyle-NextPageText="下一页"
PagerStyle-PrevPageText="上一页"
OnPageIndexChanged="changepage"
HeaderStyle-BackColor="#aaaadd"
AlternatingItemStyle-BackColor="red"
BorderColor="#990000"
CellPadding="2"
CellSpacing="0" runat="server"/>
</form>
</body>
</html>
srj911 2003-10-20
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@import namespace="system.data"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>排序</title>
</head>
<script language="VB" runat="server">
dim sortfield as string
function createdatasource() as icollection
dim dt as datatable
dim dr as datarow
dim i as integer
dt=new datatable
dt.columns.add(new datacolumn("integervalue",gettype(integer)))
dt.columns.add(new datacolumn("stringvalue",gettype(string)))
dt.columns.add(new datacolumn("currencyvalue",gettype(double)))
for i=1 to 9
dr=dt.newrow()
dr(0)=9-i
dr(1)="item"&i.tostring()
dr(2)=1.23*(i+1)
dt.rows.add(dr)
next
dim dv as dataview=new dataview(dt)
dv.sort=sortfield
createdatasource=dv
end function

sub page_load(sender as object,e as eventargs)
if not ispostback then
if sortfield="" then
sortfield="integervalue"
end if
binddata
end if

end sub

sub grid1_sort(sender as object,e as datagridsortcommandeventargs)
sortfield=e.sortexpression
binddata
end sub

sub binddata()
grid1.datasource=createdatasource()
grid1.databind
end sub
</script>
<body>
<form runat="server">
<asp:datagrid ID="grid1" runat="server"
AllowSorting="true"
OnSortCommand="grid1_sort"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
font-name="verdana"
font-size="8pt"
HeaderStyle-BackColor="#ccccff"
HeaderStyle-ForeColor="black"
AutoGenerateColumns="false">
<columns>
<asp:boundcolumn HeaderText="整型" DataField="integervalue"/>
<asp:boundcolumn HeaderText="字符型" DataField="stringvalue"/>
<asp:boundcolumn HeaderText="货贝型" DataField="currencyvalue"
DataFormatString="{0:c}"
ItemStyle-HorizontalAlign="right"/>
</columns>

</asp:datagrid>
</form>
</body>
</html>
cuike519 2003-10-20
  • 打赏
  • 举报
回复
排序本身不再DataGrid里面进行,是在DataTable或者DataView里面!这要看你绑定的数据源了!
DataTable提供Select方法.DataView提供Filter属性(设置行筛选)!也就是说你可以在Select或者Filter里面设置Order by Fieldname.
翻页的时候只要改变页码重新绑定就可以了!(注意无效页码的产生)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧