怎么在DataGrid的列实现这样的排序功能?

pbfan 2003-12-19 04:44:50
当第一次单击列时,实现按升序排序,当第二次单击时就按降序排列?
...全文
33 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
比尔咔咔 2003-12-19
  • 打赏
  • 举报
回复
你要多列排序的话可以使用ViewState 或 Session 记录下排序字段在排序

如果 你还要使用自定义分页的话 就不能使用
DataView.Sort

想要排序 又快又好 还是写存储过程 较好
swaye 2003-12-19
  • 打赏
  • 举报
回复
mark
sunkyling 2003-12-19
  • 打赏
  • 举报
回复
在PAGELOAD 中加入

string s;
try
{
s=Session["HashTabletable"].ToString ();
s=Session["DataSortTable"].ToString();
}

catch
{
Hashtable ht=new Hashtable ();
Session.Add ("HashTabletable",ht);
DataView dv=new DataView();
Session.Add("DataSortTable",dv);
}


自定义函数



public string SortData(string SortExpr)
{
bool bFinded;
string sPK;
string strSort;

sPK=SortExpr;


table=(Hashtable) Session["HashTabletable"];

bFinded=false;


foreach (DictionaryEntry d in table)
{
if ((string) d.Key == sPK)
{
bFinded=true;


if ( d.Value.ToString () ==" ASC") //ASCENDING
{
strSort=" DESC";
SortExpr=SortExpr + " DESC";
}
else //DESCENDING
{
strSort=" ASC";
SortExpr=SortExpr + " ASC";
}
table.Remove (sPK);

table.Add (sPK,strSort);
break;
}
}

if (! bFinded) //Add New
{
table.Add (SortExpr," ASC");
SortExpr= SortExpr + " ASC";
}

Session["HashTabletable"]=table;

return SortExpr;

}





其中DATAGRID的绑定列因该写上 有 数据 和排序 是一样的子段
datagrid的 sortcommmand 函数.
private void dgworklog_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{

//获的绑定数据源
DataView dv =.........
SortExpr=e.SortExpression.ToString ();
SortExpr=SortData(SortExpr);
dv.Sort=SortExpr;
dgworklog.DataSource=dv;
dgworklog.DataBind();
//Session["DataSortTable"]=dv;
}
houlinghouling 2003-12-19
  • 打赏
  • 举报
回复
忘记写i=0了,在你的关闭页面的时候记得i=0!
laughingrat 2003-12-19
  • 打赏
  • 举报
回复
http://chs.gotdotnet.com/quickstart/aspplus/doc/webdataaccess.aspx#sort
houlinghouling 2003-12-19
  • 打赏
  • 举报
回复
1。public static int i = 0;
2。
protected void OnSortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
i += 1;
BindGrid();
}
3。private void BindGrid()
{
string m_strConn = ConfigurationSettings.AppSettings["connectionString"];
SqlConnection cnn = new SqlConnection(m_strConn);
SqlDataAdapter da;

if (i%2 == 0)
da = new SqlDataAdapter("select * from jcyhqd order by yhm desc",cnn);
else
da = new SqlDataAdapter("select * from jcyhqd order by yhm asc",cnn);

DataSet ds=new DataSet();
da.Fill(ds, "user");

this.DataGrid1 .DataSource = ds;
this.DataGrid1.DataBind();
}
在.aspx文件中:

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" AllowSorting="True" OnSortCommand="OnSortCommand">
<Columns>
<asp:TemplateColumn SortExpression="yhm">
<HeaderTemplate>
<asp:LinkButton id="LinkButton1" runat="server" CommandName="sort" CommandArgument="lastname">UserName</asp:LinkButton>
</HeaderTemplate>
<ItemTemplate>
<%#DataBinder.Eval (Container.DataItem,"yhm")%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns></DataGrid>

调试过的可以实现!
wangsaokui 2003-12-19
  • 打赏
  • 举报
回复
多列的话最好做一个单独的WebForm,上面有由用户选择的源排序列和目的排序列的两个listbox,需要排序时先弹出来这个页面,选择后将顺序作为字符返回前一个页面进行处理。
pbfan 2003-12-19
  • 打赏
  • 举报
回复
不是同一个概念,DataGrid里面要怎么记录多列的排序表达式呀?
laughingrat 2003-12-19
  • 打赏
  • 举报
回复
比如说点击按钮
<asp:Button id="btnSort" RunAt="server" Text="升序">
protected string strSql;

private void btnSort_Click(object sender ,System.EventArgs e)
{
if(btnSort.Text = "升序")
{
strSql = "Order By id Desc";
btnSort.Text = "降序";
}
else
{
strSql = "Order By Id";
btnSort.Text = "升序" ;
}
DataGridBind();//重新绑定一次
}

private void DataGridBind()
{
SqlConnection strConn = ....;
SqlDataAdapter strDA = new SqlDataAdapter(strSql,strConn);
.....//绑定到DataGrid
}
laughingrat 2003-12-19
  • 打赏
  • 举报
回复
比如说点击按钮
<asp:Button id="btnSort" RunAt="server" Text="升序">
protected string strSql;

private void btnSort_Click(object sender ,System.EventArgs e)
{
if(btnSort.Text = "升序")
{
strSql = "Order By id Desc";
btnSort.Text = "降序";
}
else
{
strSql = "Order By Id";
btnSort.Text = "升序" ;
}
}

private void DataGridBind()
{
SqlConnection strConn = ....;
SqlDataAdapter strDA = new SqlDataAdapter(strSql,strConn);
.....//绑定到DataGrid
}

62,046

社区成员

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

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

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

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