【发布时间】:2014-05-29 21:11:38
【问题描述】:
我需要在用户控件中实现可排序的 DataGrid。
我的主页代码如下:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
myPlaceHolder.Controls.Add(page.LoadControl("~/myControl.ascx") as MyCtrl);
}
用户控件如下所示:
<asp:DataGrid ID="myGrid" runat="server" Width="100%" AutoGenerateColumns="False"
AllowSorting="True" OnSortCommand="Grid_Sort" EnableViewState="true" >
<Columns>
<asp:BoundColumn DataField="Clmn1" SortExpression="" HeaderText="" />
<asp:BoundColumn DataField="Clmn2" SortExpression="Clmn2" HeaderText="Clmn2header" />
</Columns>
</asp:DataGrid>
所以我遇到了以下问题:当我单击自动生成的链接按钮 Clmn2header 对数据进行排序时,它会导致主页重新加载(而不是回发)并因此创建新的用户控件。所以回发永远不会发生,排序方法 Grid_Sort 永远不会触发。
我确定 ViewState 已启用。
请帮帮我。我做错了什么? 谢谢。
编辑
我只是简化一下,实际上,用户控件初始化看起来像这样:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
myPlaceHolder.Controls.Add(MyCtrl.createInstance(/*some params*/));
}
和crete实例方法:
public static MyCtrl createInstance(/*some params*/)
{
MyCtrl ctrl = page.LoadControl("~/myControl.ascx") as MyCtrl;
ctrl._init(/*some params*/);
return ctrl;
}
private void _init(/*some params*/)
{
/*setting controls properties with params*/
}
【问题讨论】:
-
仍然没有解决问题。帮助,任何人!
标签: c# asp.net sorting datagrid user-controls