2

我被难住了。

我正在处理使用 Telerik RadGrids 的应用程序页面。我想这很简单。网格中的每一行都有一个 EditFormSettings 模板集。里面有一个 DropDownList 和一个 Panel。DropDownList 包含许多要显示的不同报告,因此当用户选择某些内容时,UserControl 会动态添加到此面板并显示一个报告,该报告是另一个 RadGrid 或先前制作的 UserControl 内的 RadRadialGauge。该功能可以正常工作。

如果在此面板中加载了 RadGrid,则当我去展开另一行时,问题就来了。显示以下错误:

*描述:在执行当前 Web 请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:无效的 JSON 原语:.*

如果第一次加载 RadRadialGauge 并且我去扩展另一行,则不会发生这种情况。仅当它是带有 RadGrid 的 UserControl 时。这个 UserControl 非常基本,所以我认为上面没有任何东西可能是罪魁祸首。

一些代码可以帮助解释我写的内容。

<EditFormSettings EditFormType="Template">
    <FormTemplate> 
        <div id="dashboardExpandedTemplate">                            
            <asp:DropDownList ID="ddlReportsList" AutoPostBack="true" OnSelectedIndexChanged="ReportSelected" runat="server" />
            <asp:Panel ID="pnlReports" runat="server" />
         </div>
    </FormTemplate>
</EditFormSettings>

protected void ReportSelected(object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList)sender;

    if (ddl.SelectedIndex != 0)
    {
        GridEditFormItem editItem = (GridEditFormItem)ddl.NamingContainer;
        Panel pnlReports = (Panel)editItem.FindControl("pnlReports");
        pnlReports.Controls.Clear();

        SavedReport saved = new SavedReport(int.Parse(ddl.SelectedValue));
        Control cntrl = Page.LoadControl("/controls/" + saved.ControlPath);                  
     }
}

提前谢谢你。

4

1 回答 1

0

想我会根据您的评论部分发布此答案。我 ClientIDMode="Static"在我的 GridTemplateColumn 上设置了

<telerik:GridTemplateColumn>
    <ItemTemplate>
        <telerik:RadButton OnClientClicked="windowShow" ClientIDMode="Static" Text="Example" runat="server">
        </telerik:RadButton>
    </ItemTemplate>
</telerik:GridTemplateColumn>

OP 似乎从ClientIDMode="Static"在主 RadGrid 标签上设置错误。我想我们都应该远离将这个属性与 Telerik 混合。在我终于找到这篇文章之前,我花了半天时间在谷歌上搜索。

于 2017-02-07T18:09:32.330 回答