基本上我反映的是一个objectdatasource类,我需要能够动态创建参数。但我不知道如何将它们实际添加到参数的Propertyinfo中。 aspx方法不起作用,因为这都是动态完成的。
这就是我所拥有的,但是当您尝试添加集合对象时它会出错
var dataSourceType = typeof(DataSource).Assembly.GetType("DataSource", true);
var datafield = Activator.CreateInstance(dataSourceType);
PropertyInfo pinfo = datafield.GetType().GetProperty("Parameters");
ParameterCollection parmCollection = new ParameterCollection();
QueryStringParameter myParm = new QueryStringParameter("ber", DbType.String, "ber");
parmCollection.Add(myParm);
pinfo.SetValue(pinfo, parmCollection, null);
所以是的,我基本上想要创建数据源,然后附加我的参数集合,然后当网格或其他控件加载时,它可以在源上执行数据绑定。
答案 0 :(得分:0)
我不确定,但你有一个错字......你的意思不是这样:
var dataSourceType = typeof(DataSource).Assembly.GetType("DataSource", true);
var datafield = Activator.CreateInstance(dataSourceType);
PropertyInfo pinfo = datafield.GetType().GetProperty("Parameters");
ParameterCollection parmCollection = new ParameterCollection();
QueryStringParameter myParm = new QueryStringParameter("ber", DbType.String, "ber");
parmCollection.Add(myParm);
pinfo.SetValue(datafield, parmCollection, null);
请务必在命名空间中包含类的名称(“DataSource”字符串)。 我测试了代码并成功完成了。 :)
此代码将 datafield 对象的 Parameters 属性设置为指定值。如果要设置其他DataSource对象的 Parameters 属性,可以只替换最后一行:
pinfo.SetValue(«object», parmCollection, null);
你的意图有点混乱......为什么你不能将你正在处理的对象转换为ObjectDataSource,然后访问/设置你想要的属性?
object dataSource = new ObjectDataSource();
(...)
var objectDataSource = dataSource as ObjectDataSource;
if (objectDataSource != null)
{
var selectParams = objectDataSource.SelectParameters;
selectParams.Clear();
selectParams.Add(new QueryStringParameter("ber", DbType.String, "ber"));
}
我希望它有所帮助。