C# 用户控件内的可排序数据网格

C# 用户控件内的可排序数据网格,c#,asp.net,sorting,datagrid,user-controls,C#,Asp.net,Sorting,Datagrid,User Controls,我需要在用户控件内实现可排序的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%" AutoGen

我需要在用户控件内实现可排序的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>
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    myPlaceHolder.Controls.Add(MyCtrl.createInstance(/*some params*/));
}
用户控件如下所示:

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>
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    myPlaceHolder.Controls.Add(MyCtrl.createInstance(/*some params*/));
}
和实例方法:

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*/
}

什么是MyCtrl?为什么使用loadcontrol方法进行强制转换?下面的行应该足以实例化您的控件

myPlaceHolder.Controls.Add(page.LoadControl("~/myControl.ascx"));
您是否在页面和控件的页面加载事件中设置了IsPostBack()检查点,我确信当您单击列标题文本链接时,不应该有完整的页面回发

if (!IsPostBack) { }

如果您的sort命令事件还未命中,请告诉我。

我添加了完整的用户控件初始化代码。我尝试过设置IsPostBack检查点,但IsPostBack始终为false。但问题仍未解决。救命,任何人!