Asp.net Sys.WebForms.PageRequestManagerServerErrorException:无效列名:

Asp.net Sys.WebForms.PageRequestManagerServerErrorException:无效列名:,asp.net,telerik-grid,dynamic-columns,Asp.net,Telerik Grid,Dynamic Columns,我正在我的一个项目中创建动态网格。我在Page\u Init方法中添加了网格代码。通常我使用的是绑定列或模板列,它们按预期工作。 代码如下: protected void Page_Init(object source, System.EventArgs e) { if (Session["colnames"] != null) { List<CommanIdTitle> CategoryIdTitle = new List<CommanI

我正在我的一个项目中创建动态网格。我在
Page\u Init
方法中添加了网格代码。通常我使用的是绑定列或模板列,它们按预期工作。 代码如下:

protected void Page_Init(object source, System.EventArgs e)
{
     if (Session["colnames"] != null)
     {
         List<CommanIdTitle> CategoryIdTitle = new List<CommanIdTitle>();
         MainSubCategory CateMarks = (MainSubCategory)Session["colnames"];
         GridBoundColumn boundColumn_StudentId;
         boundColumn_StudentId = new GridBoundColumn();
         boundColumn_StudentId.DataField = "StudentId";
         boundColumn_StudentId.HeaderText = "Student Id";
         boundColumn_StudentId.UniqueName = "StudentId";
         boundColumn_StudentId.AllowFiltering = false;
         boundColumn_StudentId.Display = false;
         Grid_CategoryMarks.MasterTableView.Columns.Add(boundColumn_StudentId);

         GridBoundColumn boundColumn_StudentName;
         boundColumn_StudentName = new GridBoundColumn();
         boundColumn_StudentName.DataField = "StudnetName";
         boundColumn_StudentName.HeaderText = "Student Name";
         boundColumn_StudentName.UniqueName = "StudentName";
         boundColumn_StudentName.AllowFiltering = false; 

         Grid_CategoryMarks.MasterTableView.Columns.Add(boundColumn_StudentName);

         GridTemplateColumn templateColumn_AverageFinal;
         templateColumn_AverageFinal = new GridTemplateColumn();
         templateColumn_AverageFinal.ItemTemplate = new MyTemplate2("0");
         templateColumn_AverageFinal.UniqueName = "Average";
         templateColumn_AverageFinal.HeaderText = "Test";
         templateColumn_AverageFinal.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
         templateColumn_AverageFinal.AllowFiltering = false;
         templateColumn_AverageFinal.ReadOnly = true;
         Grid_CategoryMarks.MasterTableView.Columns.Add(templateColumn_AverageFinal);
    }
}
protected void Page_Init(object source, System.EventArgs e)
{
    if (Session["colnames"] != null)
    {
        List<CommanIdTitle> CategoryIdTitle = new List<CommanIdTitle>();
        MainSubCategory CateMarks = (MainSubCategory)Session["colnames"];
        GridBoundColumn boundColumn_StudentId;
        boundColumn_StudentId = new GridBoundColumn();
        boundColumn_StudentId.DataField = "StudentId";
        boundColumn_StudentId.HeaderText = "Student Id";
        boundColumn_StudentId.UniqueName = "StudentId";
        boundColumn_StudentId.AllowFiltering = false;
        boundColumn_StudentId.Display = false;
        Grid_CategoryMarks.MasterTableView.Columns.Add(boundColumn_StudentId);

        GridBoundColumn boundColumn_StudentName;
        boundColumn_StudentName = new GridBoundColumn();
        boundColumn_StudentName.DataField = "StudnetName";
        boundColumn_StudentName.HeaderText = "Student Name";
        boundColumn_StudentName.UniqueName = "StudentName";
        boundColumn_StudentName.AllowFiltering = false;
        Grid_CategoryMarks.MasterTableView.Columns.Add(boundColumn_StudentName);

        /*This code throws error*/
        GridColumnGroup groupHeaderFinal = new GridColumnGroup();
        groupHeaderFinal.Name = "TotalAveragePerTerm";
        groupHeaderFinal.HeaderText = "Total Average Per Term";
        groupHeaderFinal.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
        Grid_CategoryMarks.MasterTableView.ColumnGroups.Add(groupHeaderFinal);

        GridTemplateColumn templateColumn_AverageFinal;
        templateColumn_AverageFinal = new GridTemplateColumn();
        templateColumn_AverageFinal.ItemTemplate = new MyTemplate2("0");
        templateColumn_AverageFinal.UniqueName = "Average";
        templateColumn_AverageFinal.HeaderText = "";
        templateColumn_AverageFinal.ColumnGroupName = "TotalAveragePerTerm";
        templateColumn_AverageFinal.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
        templateColumn_AverageFinal.AllowFiltering = false;
        templateColumn_AverageFinal.ReadOnly = true;
        Grid_CategoryMarks.MasterTableView.Columns.Add(templateColumn_AverageFinal);
    }
}
当我在任何回发中添加此内容时,出现了一个错误

Sys.WebForms.PageRequestManagerServerErrorException:无效列名:

我发现的一个解决方案是设置网格的
EnableViewState=False
。但如果我这样做,
viewstate
将无法维护,网格将崩溃,所有数据都将丢失

这是我的设计代码

<telerik:RadGrid ID="Grid_CategoryMarks" runat="server" EnableViewState="true"
        AllowFilteringByColumn="True" AllowSorting="True" 
        ShowGroupPanel="false" AutoGenerateColumns="False" PageSize="10" 
        ShowStatusBar="true"  OnNeedDataSource="Grid_CategoryMarks_NeedDataSource"  OnItemDataBound="Grid_CategoryMarks_ItemDataBound"
        ShowFooter="True" FilterItemStyle-HorizontalAlign="Left">
    <ClientSettings AllowDragToGroup="True">
        <Selecting AllowRowSelect="false" UseClientSelectColumnOnly="true"/>
        <Scrolling AllowScroll="true" UseStaticHeaders="true" SaveScrollPosition="true"/>
    </ClientSettings> 
    <MasterTableView  AutoGenerateColumns="false" >
        <NoRecordsTemplate>
            <asp:Label ID="lbl_rec_msg" runat="server" Text="No record exist"></asp:Label>
        </NoRecordsTemplate>
    </MasterTableView>
</telerik:RadGrid>

我遇到了类似的问题。问题是您已经在设计中定义了网格,并且在
page\u init
方法中再次创建了网格

将其从设计中删除,并尝试从代码隐藏中创建。因此,每次都会创建新的瞬间