我把AutoGenerateColumns设为false;然后在程序里创建BOUNDCOLUMN来增加列,再用DATAFIELD来绑定,现在想排序,应该怎么弄?

zj510 2003-10-08 10:15:07
我把AutoGenerateColumns设为false;然后在程序里创建BOUNDCOLUMN来增加列,再用DATAFIELD来绑定,现在想排序,应该怎么弄?
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-10-08
  • 打赏
  • 举报
回复
1. you need to override LoadViewState to recreate the columns
2. you need to set SortExpression and add SortCommand handler

try something like


<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script runat="server">

protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
AddColumns();
}

void AddColumns()
{
BoundColumn bc = new BoundColumn();
bc.DataField = "au_lname";
bc.SortExpression = "au_lname";
bc.HeaderText = "Last Name";
DataGrid1.Columns.Add(bc);


bc = new BoundColumn();
bc.DataField = "au_fname";
bc.SortExpression = "au_fname";
bc.HeaderText = "First Name";
DataGrid1.Columns.Add(bc);


DataGrid1.SortCommand += new DataGridSortCommandEventHandler(this.Sort_Grid);

}

void BindData(string sSortExpression)
{

SqlDataAdapter da = new SqlDataAdapter("select * from authors", "server=localhost;database=pubs;uid=smart;pwd=getsmart;");
DataTable dt = new DataTable();
da.Fill(dt);
DataView dv = dt.DefaultView;
dv.Sort = sSortExpression;
DataGrid1.DataSource = dv;
DataGrid1.DataBind();
}

void Page_Load(Object sender, EventArgs e)
{

if (!IsPostBack)
{
DataGrid1.AllowSorting = true;
AddColumns();
BindData("");
}
}

void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
{
BindData(e.SortExpression);
}

</script>

<body>

<form runat=server>
<asp:DataGrid id=DataGrid1 runat=server AutoGenerateColumns=false/>
<asp:Button id=btn runat=server Text="submit" />
</form>

</body>
</html>
xrll 2003-10-08
  • 打赏
  • 举报
回复
BoundColumn bc = new BoundColumn();
bc.DataField="IntegerValue";
bc.SortExpression = "CurrencyValue";
bc.HeaderText = "aaaa";
bc.HeaderStyle.BackColor = Color.Black;
bc.HeaderStyle.ForeColor = Color.White;
bc.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
bc.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
bc.ItemStyle.Wrap = false;
MyDataGrid.Columns.Add(bc);
......
MyDataGrid.AllowSorting = true;
MyDataGrid.SortCommand += new DataGridSortCommandEventHandler(this.Sort_Grid);
....
下面就是写Sort_Grid事件了,如:
void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
{
DataTable dt = (DataTable)Session["Source"];
DataView dv = new DataView(dt);
dv.Sort = e.SortExpression;
MyDataGrid.DataSource = dv;
MyDataGrid.DataBind();

}
竹君子 2003-10-08
  • 打赏
  • 举报
回复
1.添加AllowSorting="True"和OnSortCommand="SortCommand"在<datagrid>里
2 .cs文件里写函数
public void SortCommand(object sender,DataGridSortCommandEventArgs e)
{
ViewState["SortExpression"]=e.SortExpression;
UpdateView();

}

62,072

社区成员

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

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

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

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