我有两个方法是来自这里的代码http://www.rajbandi.net/fixing-ssrs-report-viewer-control-date-picker-in-google-chrome/#comment-988,然后我将以下代码应用到我的项目中我遇到了问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.Configuration;
using System.Web.SessionState;
using RLISDev.Models;
using RLISDev.BaseObjects;
using System.Web.Mvc;
using RLISDev.Extensions;
using RLISDev.Annotations;
using System.Collections;
protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
DatePicker1.Value = string.Join(",", (new > List(GetDateParameters()).ToArray()));
}
private IEnumerable GetDateParameters() {
// I'm assuming report view control id
// as reportViewer
foreach(ReportParameterInfo info in
ReportViewer1.ServerReport.GetParameters()) {
if (info.DataType ==
ParameterDataType.DateTime) {
yield
return string.Format("[{0}]",
info.Prompt);
}
}
}
我在这里得到了错误
List(GetDateParameters())。ToArray())使用泛型类型 'System.Collections.Generic.List'需要1个类型参数
我不确定我错过了什么。
答案 0 :(得分:3)
你必须给它一个类型参数,因为它是一个泛型类:
var test = new List<DateTime>();
取决于GetDateParameters()
的返回类型;你想要的东西:
DatePicker1.Value = string.Join(",", (new List<DateTime>(GetDateParameters()).ToArray()));
答案 1 :(得分:0)
注意:我修改了我的代码
protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
DatePicker1.Value = string.Join(",", (GetDateParameters().ToList().ToArray()));
}
private IEnumerable < string > GetDateParameters() {
// I'm assuming report view control id as reportViewer
foreach(ReportParameterInfo info in ReportViewer1.ServerReport.GetParameters()) {
if (info.DataType == ParameterDataType.DateTime) {
yield return string.Format("[{0}]", info.Prompt);
}
}
}
这是有效的。