ASP.NET GridView动态绑定怎么排序

wa6190064 2010-06-04 05:38:32
如题,最好给点代码哈
...全文
230 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tgbd 2010-06-05
  • 打赏
  • 举报
回复
通过JS感觉比较灵活一些。老外一个sorttable.js以前用过,很简单,用了后你会有体会的。
  • 打赏
  • 举报
回复
完成 jf
parverxiao 2010-06-05
  • 打赏
  • 举报
回复
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
//排序
GridView1.EditIndex = -1;
if (ViewState["sortColumn"] == null)
{

ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";

}
else
{
if (ViewState["sortDirection"].ToString() == "ASC")
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}

}
string sortExpression = e.SortExpression;
bind();
}

长腿爸爸 2010-06-04
  • 打赏
  • 举报
回复
使用dataSet数据源,启用排序,每列添加一个属性,就可以排序了。
xlj_2008 2010-06-04
  • 打赏
  • 举报
回复
帮顶~~·
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
也可使用List<T>实现自定义排序
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" OnSorting="GridView1_Sorting" AllowPaging="true" PageSize="10" OnPageIndexChanging="GridView1_PageIndexChanging">
<Columns>
<asp:BoundField DataField="id" HeaderText="代码" SortExpression="id"/>
<asp:BoundField DataField="name" HeaderText="名称" SortExpression="name"/>
<asp:TemplateField SortExpression="BUID" HeaderText="BUID">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text=' <%# Bind("ID") %>' ToolTip=' <%# DataBinder.Eval(Container.DataItem, "ID") %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
ViewState["SortOrder"] = "deptid";
ViewState["OrderDire"] = "asc";
BindGridView();
}
}

protected void BindGridView()
{

DataSet ds = new DataSet();


DataView dv = ds.Tables[0].DefaultView;
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
dv.Sort = sort;
this.GridView1.DataSource = dv;

this.GridView1.DataBind();

}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string vortExp = e.SortExpression;
if (ViewState["SortOrder"].ToString() == vortExp)
{
if ((string)ViewState["OrderDire"] == "desc")
{
ViewState["OrderDire"] = "asc";
}
else if ((string)ViewState["OrderDire"] == "asc")
{
ViewState["OrderDire"] = "desc";
}
}
else
{
ViewState["SortOrder"] = e.SortExpression;
}
BindGridView();

}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
BindGridView();
}
QQ865926998 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq865926998 的回复:]
引用 3 楼 wa6190064 的回复:
能不能不再重新绑定数据源啊
应该不可以了
[/Quote]先释放,再绑定或许可以
QQ865926998 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wa6190064 的回复:]
能不能不再重新绑定数据源啊
[/Quote]应该不可以了
wa6190064 2010-06-04
  • 打赏
  • 举报
回复
能不能不再重新绑定数据源啊
liu204cn 2010-06-04
  • 打赏
  • 举报
回复
在绑定结束时间里写代码设置 SortExpression 属性。
更多可以参考:http://www.cnblogs.com/heekui/archive/2008/06/02/1212051.html
dingjian2008 2010-06-04
  • 打赏
  • 举报
回复
<asp:GridView ID="GVCell" runat="server" Width="100%" AllowSorting="True" onsorting="GVCell_Sorting" DataKeyNames="网元">
</asp:GridView>

protected void GVCell_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt = GetData();//获取数据源
DataView dv = new DataView(dt);
if (ViewState["gvsort"].ToString() == " DESC")
{
ViewState["gvsort"] = " ASC";

dv.Sort = "排序列名 asc";
}
else
{
ViewState["gvsort"] = " DESC";

dv.Sort = "排序列名 desc";
}
dt = dv.ToTable();
GridView1.DataSource = dt;
GridView1.DataBind();

}

62,046

社区成员

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

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

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

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