Я обновил некоторый код для использования бета-версии инструментария Ajax Control 0911, и по какой-то причине код, который динамически добавляет в код динамически складывающиеся расширители панелей, теперь вызывает следующую ошибку в jscript на стороне клиента ...
Ошибка времени выполнения Microsoft JScript: Sys.ArgumentException: значение не должно быть нулевым для элементов управления и поведения.
Имя параметра: элемент
в ...
$create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) {
/// <summary locid="M:J#Sys.Component.create" />
/// <param name="type" type="Type"></param>
/// <param name="properties" optional="true" mayBeNull="true"></param>
/// <param name="events" optional="true" mayBeNull="true"></param>
/// <param name="references" optional="true" mayBeNull="true"></param>
/// <param name="element" domElement="true" optional="true" mayBeNull="true"></param>
/// <returns type="Object"></returns>
var e = Function._validateParams(arguments, [
{name: "type", type: Type},
{name: "properties", mayBeNull: true, optional: true},
{name: "events", mayBeNull: true, optional: true},
{name: "references", mayBeNull: true, optional: true},
{name: "element", mayBeNull: true, domElement: true, optional: true}
]);
if (e) throw e;
if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) {
if (!element) throw Error.argument('element', Sys.Res.createNoDom);
}
Я принимаю, что это только бета-версия, но я не могу ни найти обходной путь, ни даже понять причину, по которой этот довольно простой код больше не работает.
код
private Panel GetReportPanel(DataRow dr, ReportParameter[] Params)
{
Panel pnlReport = new Panel();
pnlReport.ID = Uri.EscapeDataString(dr["ReportName"].ToString()) + "_MainReportContainer";
//Report Title Section
var pnlReportTitle = new Panel();
pnlReportTitle.CssClass = "ReportSectionTitle";
var tblReportTitle = new Table();
var trowReportTitle = new TableRow();
var tcellReportTitle = new TableCell();
var imgReportTitleExpand = new Image();
imgReportTitleExpand.ID = Uri.EscapeDataString("img" + dr["ReportName"].ToString() + "DataExpand");
tcellReportTitle.Controls.Add(imgReportTitleExpand);
trowReportTitle.Controls.Add(tcellReportTitle);
tcellReportTitle = new TableCell();
var lblReportTitle = new Label();
lblReportTitle.ID = Uri.EscapeDataString("lnk" + dr["ReportName"].ToString());
lblReportTitle.Text = "Functional " + dr["ReportName"].ToString();
tcellReportTitle.Controls.Add(lblReportTitle);
trowReportTitle.Controls.Add(tcellReportTitle);
tblReportTitle.Controls.Add(trowReportTitle);
pnlReportTitle.Controls.Add(tblReportTitle);
pnlReport.Controls.Add(pnlReportTitle);
//Report Section
var pnlReportSection = new Panel();
pnlReportSection.ID = Uri.EscapeDataString("pnlReportSection" + dr["ReportName"].ToString());
pnlReportSection.CssClass = "ReportSection";
pnlReportSection.ScrollBars = ScrollBars.None;
var pnlInnerReportSection = new Panel();
pnlInnerReportSection.CssClass = "ReportSection";
var rptControl = new ReportViewer();
rptControl.ID = "rpt" + dr["ReportName"].ToString().Replace(' ', '_');
rptControl.ProcessingMode = ProcessingMode.Remote;
rptControl.Width = new Unit("100%");
rptControl.ShowDocumentMapButton = false;
rptControl.ShowParameterPrompts = false;
rptControl.Visible = true;
rptControl.Height = new Unit("500px");
rptControl.AsyncRendering = (bool)dr["ASyncRenderingEnabled"];
rptControl.ServerReport.ReportPath = dr["SSRSReportPath"].ToString();
rptControl.ServerReport.ReportServerUrl = new Uri("http://horoap336/reportserver");
rptControl.ServerReport.SetParameters(Params);
pnlInnerReportSection.Controls.Add(rptControl);
pnlReportSection.Controls.Add(pnlInnerReportSection);
pnlReport.Controls.Add(pnlReportSection);
//Collapsable Panel Extender
var Extender = new AjaxControlToolkit.CollapsiblePanelExtender();
Extender.TargetControlID = pnlReportSection.ID;
Extender.ID = Uri.EscapeDataString(dr["ReportName"].ToString()) + "_Extender";
Extender.CollapsedSize = 0;
Extender.Collapsed = true;
Extender.ExpandControlID = lblReportTitle.ID;
Extender.CollapseControlID = lblReportTitle.ID;
Extender.AutoCollapse = false;
Extender.AutoExpand = false;
Extender.ScrollContents = false;
Extender.TextLabelID = lblReportTitle.ID;
Extender.CollapsedText = "Functional " + dr["ReportName"].ToString() + " (Click To Show Details...)";
Extender.ExpandedText = "Functional " + dr["ReportName"].ToString() + " (Click To Hide Details...)";
Extender.ImageControlID = imgReportTitleExpand.ID;
Extender.ExpandedImage = "~/images/collapse.jpg";
Extender.CollapsedImage = "~/images/expand.jpg";
Extender.ExpandDirection = AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical;
pnlReport.Controls.Add(Extender);
return pnlReport;
}
Затем эта панель добавляется к панели в файле aspx, используя ...
pnlContainer.Controls.Add(GetReportPanel(dr,Params));
файл aspx ...
<%@ Page Title="Operations MI Dashboard - Functional Reporting" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="FunctionalReport.aspx.cs" Inherits="TelephonyReport" %>
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Panel ID="pnlContainer" runat="server">
</asp:Panel>
</asp:Content>
Итак, мои вопросы:
- Есть ли проблема с моим кодом, которая
очевидно только в более поздней версии
инструментария?
- Кто-нибудь знает о
Обходной путь, который я могу попробовать?
- Может кто-нибудь объяснить, почему эта проблема
происходит только в последней версии?