protected override void DisplayDesignData() { string strFilterUI = ""; if (this.designView.FileParameters != null) { Dictionary <string, RptViewFileParameter> paramMap = new Dictionary <string, RptViewFileParameter>(); for (int i = 0; i < this.designView.FileParameters.Length; i++) { paramMap.Add(this.designView.FileParameters[i].FileParameterName, this.designView.FileParameters[i]); } for (int i = 0; i < this.gridWebGrid.Rows.Count; i++) { string strName = this.gridWebGrid.Rows[i].Items.FindItemByKey("ParameterName").Value.ToString(); if (paramMap.ContainsKey(strName) == true) { RptViewFileParameter param = paramMap[strName]; this.gridWebGrid.Rows[i].Items.FindItemByKey("UserInput").Value = FormatHelper.StringToBoolean(param.ViewerInput); this.gridWebGrid.Rows[i].Items.FindItemByKey("ParameterDesc").Value = param.Description; this.gridWebGrid.Rows[i].Items.FindItemByKey("DefaultValue").Value = param.DefaultValue; } for (int n = 0; this.designView.FiltersUI != null && n < this.designView.FiltersUI.Length; n++) { if (this.designView.FiltersUI[n].InputType == ReportViewerInputType.FileParameter) { if (this.designView.FiltersUI[n].InputName == strName) { strFilterUI += strName + "@" + this.designView.FiltersUI[n].UIType + ";"; if (this.designView.FiltersUI[n].UIType == ReportFilterUIType.SelectQuery) { strFilterUI += this.designView.FiltersUI[n].SelectQueryType + ";"; } else if (this.designView.FiltersUI[n].UIType == ReportFilterUIType.DropDownList) { strFilterUI += this.designView.FiltersUI[n].ListDataSourceType + ";"; if (this.designView.FiltersUI[n].ListDataSourceType == "static") { strFilterUI += this.designView.FiltersUI[n].ListStaticValue + ";"; } else { strFilterUI += Convert.ToInt32(this.designView.FiltersUI[n].ListDynamicDataSource).ToString() + ";" + this.designView.FiltersUI[n].ListDynamicTextColumn + ";" + this.designView.FiltersUI[n].ListDynamicValueColumn + ";"; } } strFilterUI += "|"; } } } } } this.hidInputUIType.Value = strFilterUI; }
private void InitParameter() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(this.designView.UploadFileName); XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.CreateNavigator().NameTable); manager.AddNamespace("a", "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition"); manager.AddNamespace("rd", "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"); XmlNode node = xmlDoc.DocumentElement.SelectSingleNode("//a:ReportParameters", manager); if (node == null) { return; } List <RptViewFileParameter> paramList = new List <RptViewFileParameter>(); for (int i = 0; i < node.ChildNodes.Count; i++) { XmlNode nodeParam = node.ChildNodes[i]; if (nodeParam.Name == "ReportParameter") { RptViewFileParameter param = new RptViewFileParameter(); param.FileParameterName = nodeParam.Attributes["Name"].FirstChild.Value; param.Description = nodeParam.SelectSingleNode("a:Prompt", manager).FirstChild.Value; param.DataType = nodeParam.SelectSingleNode("a:DataType", manager).FirstChild.Value.ToLower(); if (nodeParam.SelectSingleNode("a:DefaultValue/a:Values/a:Value", manager) != null) { param.DefaultValue = nodeParam.SelectSingleNode("a:DefaultValue/a:Values/a:Value", manager).FirstChild.Value; } param.Sequence = paramList.Count + 1; paramList.Add(param); } } for (int i = 0; i < paramList.Count; i++) { DataRow row = DtSource.NewRow(); row["Sequence"] = paramList[i].Sequence; row["ParameterName"] = paramList[i].FileParameterName; row["ParameterDesc"] = paramList[i].Description; row["DataType"] = paramList[i].DataType; row["DefaultValue"] = paramList[i].DefaultValue; row["UserInput"] = true; row["InputUIType"] = "<a href='#' onclick=\"OpenTotalSetWindow('" + this.gridWebGrid.Rows.Count + "');return false;\">Click</a>"; DtSource.Rows.Add(row); } this.gridWebGrid.DataSource = DtSource; this.gridWebGrid.DataBind(); }
protected override void UpdateReportDesignView() { ArrayList listFilterUI = new ArrayList(); Dictionary <string, string> filterUIList = new Dictionary <string, string>(); string strFilterUI = this.hidInputUIType.Value; string[] strFilterUIList = strFilterUI.Split('|'); for (int i = 0; i < strFilterUIList.Length; i++) { if (strFilterUIList[i] != "") { string[] strTmpList = strFilterUIList[i].Split('@'); filterUIList.Add(strTmpList[0], strTmpList[1]); } } RptViewFileParameter[] parames = new RptViewFileParameter[this.gridWebGrid.Rows.Count]; for (int i = 0; i < this.gridWebGrid.Rows.Count; i++) { RptViewFileParameter param = new RptViewFileParameter(); param.Sequence = i + 1; param.FileParameterName = this.gridWebGrid.Rows[i].Items.FindItemByKey("ParameterName").Text; param.Description = this.gridWebGrid.Rows[i].Items.FindItemByKey("ParameterDesc").Text; param.DataType = this.gridWebGrid.Rows[i].Items.FindItemByKey("DataType").Text; param.DefaultValue = this.gridWebGrid.Rows[i].Items.FindItemByKey("DefaultValue").Text; param.ViewerInput = FormatHelper.BooleanToString(Convert.ToBoolean(this.gridWebGrid.Rows[i].Items.FindItemByKey("UserInput").Value)); parames[i] = param; string strName = param.FileParameterName; if (filterUIList.ContainsKey(strName) == true) { RptViewFilterUI filterUI = new RptViewFilterUI(); filterUI.Sequence = listFilterUI.Count + 1; filterUI.InputType = ReportViewerInputType.FileParameter; filterUI.InputName = strName; filterUI.SqlFilterSequence = 0; string[] strUIValList = filterUIList[strName].Split(';'); filterUI.UIType = strUIValList[0]; if (filterUI.UIType == ReportFilterUIType.SelectQuery) { filterUI.SelectQueryType = strUIValList[1]; } else if (filterUI.UIType == ReportFilterUIType.DropDownList) { filterUI.ListDataSourceType = strUIValList[1]; if (filterUI.ListDataSourceType == "static") { string strStaticVal = ""; for (int n = 2; n < strUIValList.Length; n++) { if (strUIValList[n] != "" && strUIValList[n].IndexOf(",") >= 0) { strStaticVal += strUIValList[n] + ";"; } } filterUI.ListStaticValue = strStaticVal; } else { filterUI.ListDynamicDataSource = decimal.Parse(strUIValList[2]); filterUI.ListDynamicTextColumn = strUIValList[3]; filterUI.ListDynamicValueColumn = strUIValList[4]; } } listFilterUI.Add(filterUI); } } this.designView.FileParameters = parames; for (int i = 0; this.designView.FiltersUI != null && i < this.designView.FiltersUI.Length; i++) { if (this.designView.FiltersUI[i].InputType != ReportViewerInputType.FileParameter) { listFilterUI.Add(this.designView.FiltersUI[i]); } } RptViewFilterUI[] targetFilterUI = new RptViewFilterUI[listFilterUI.Count]; listFilterUI.CopyTo(targetFilterUI); this.designView.FiltersUI = targetFilterUI; }