加班中,可能是今年的最后一问了,拜托大家,关于DataGrid动态添加绑定列后的处理问题!

gOODiDEA 2003-01-25 10:30:55
先看看代码:页面上有个ListDataGrid,静态绑定了一列。
private void Page_Load(object sender, System.EventArgs e)
{
if ( ! this.IsPostBack )
{
this.Bind();
}
}
public void CreateGrid()
{
BoundColumn BoundCol = new BoundColumn();
BoundCol.HeaderText = "hello";
BoundCol.DataField = "xxx";
BoundCol.SortExpression = "xxx";
ListDataGrid.Columns.Add( BoundCol );
}
private void ListDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
conn.dv.Sort = e.SortExpression;
ListDataGrid.DataBind();
}
private void Bind()
{
CreateGrid();
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataBind();
}
}

第一次打开都是好的,但是一点排序,叶面上就只剩下了静态绑定的那列了。相同的代码在纯静态绑定的DataGrid里面一点问题也没有。如果去掉 if ( ! this.IsPostBack ) ,则排序功能不起作用,我感觉是CreateGrid();加的地方不对,把它放到Page_load里面也不行。


...全文
27 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
gOODiDEA 2003-02-10
  • 打赏
  • 举报
回复
谢谢,结贴!
gOODiDEA 2003-02-10
  • 打赏
  • 举报
回复
我试试!
AXQ 2003-02-10
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
if ( ! this.IsPostBack )
{
this.Bind();
}
}
public void CreateGrid()
{
BoundColumn BoundCol = new BoundColumn();
BoundCol.HeaderText = "hello";
BoundCol.DataField = "xxx";
BoundCol.SortExpression = "xxx";
ListDataGrid.Columns.Add( BoundCol );
}
private void ListDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
this.Bind();
conn.dv.Sort = e.SortExpression;
ListDataGrid.DataBind();
}
private void Bind()
{
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataBind();
}
}


override protected void OnInit(EventArgs e)
{
InitializeComponent();
-->> CreateGrid();
base.OnInit(e);
}
gOODiDEA 2003-02-09
  • 打赏
  • 举报
回复
gz!
gOODiDEA 2003-02-09
  • 打赏
  • 举报
回复
to fanmingjiang(樊名江):没有任何作用!
fanmingjiang 2003-02-09
  • 打赏
  • 举报
回复
你可以试一下 System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
CreateGrid();
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataSource.dv.Sort = e.SortExpression;
ListDataGrid.DataBind();
}
或者参数传递e.SortExpression
AXQ 2003-02-08
  • 打赏
  • 举报
回复
帮顶一下!
spring_ok 2003-02-08
  • 打赏
  • 举报
回复
参考一下我的这个示例吧。

http://expert.csdn.net/Expert/TopicView1.asp?id=1409351
gOODiDEA 2003-02-08
  • 打赏
  • 举报
回复
哎,各位斑竹,DX,帮帮忙!
gOODiDEA 2003-01-31
  • 打赏
  • 举报
回复
没人来???
gOODiDEA 2003-01-31
  • 打赏
  • 举报
回复
唉,没人会???
houjianxun 2003-01-25
  • 打赏
  • 举报
回复
先把排序的的列设置好,再绑定
gOODiDEA 2003-01-25
  • 打赏
  • 举报
回复
TO letian(你快乐,所以我快乐) ( )

这样的话,第一次打开时都没有动态的绑定列。
letian 2003-01-25
  • 打赏
  • 举报
回复
private void Bind()
{
CreateGrid();
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataBind();
}
}
===〉

private void Bind()
{
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataBind();
}
CreateGrid();

}
gOODiDEA 2003-01-25
  • 打赏
  • 举报
回复
To henryfan1(henry) angel_lee(随风而逝)

刚刚有点错,忘了在ListDataGrid_SortCommand加bind(),程序里是有的。两位是这个意思吗?或者说的详细点。


private void Page_Load(object sender, System.EventArgs e)
{
if ( ! this.IsPostBack )
{
this.Bind();
}
}
public void CreateGrid()
{
BoundColumn BoundCol = new BoundColumn();
BoundCol.HeaderText = "hello";
BoundCol.DataField = "xxx";
BoundCol.SortExpression = "xxx";
ListDataGrid.Columns.Add( BoundCol );
}
private void ListDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
this.Bind();
conn.dv.Sort = e.SortExpression;
ListDataGrid.DataBind();
}
private void Bind()
{
CreateGrid();
StringBuilder ListSql = new StringBuilder();
ListSql.Append( " SELECT * FROM Table1 ");
if ( conn.GetRowCount( ListSql.ToString() ) > 0 )
{
ListDataGrid.DataSource = conn.CreateDataSource( ListSql.ToString() );
ListDataGrid.DataBind();
}
}
zwztu 2003-01-25
  • 打赏
  • 举报
回复
关注
angel_lee 2003-01-25
  • 打赏
  • 举报
回复
是呀,你生成动态绑定的列之后,要重新绑定你的数据呀
henryfan1 2003-01-25
  • 打赏
  • 举报
回复
由于你那列是动态生成的,当页面一刷新时DAGAGRID就会回复回来的状态。
在排序绑定数据前再生成这列试下。
gOODiDEA 2003-01-25
  • 打赏
  • 举报
回复
TO houjianxun(三千弱水,独取一瓢清泉)

我都排列了很多次了,你能帮我排排吗?

62,074

社区成员

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

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

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

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