0

基本上我反映的是一个作为对象数据源的类,我需要能够动态创建参数。但我不知道如何将它们实际添加到参数的 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);

所以是的,我基本上想创建数据源,然后附加我的参数集合,然后当加载网格或其他控件时,它可以对源进行数据绑定。

4

1 回答 1

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”字符串)。我已经测试了代码并成功完成。:)

此代码会将数据字段对象的参数属性设置为指定值。如果要设置其他 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"));
}

我希望它有所帮助。

于 2013-05-30T21:53:03.007 回答