【问题标题】:Using Reflection setting an objectdatasource Parameters with a ParameterCollection使用反射设置带有 ParameterCollection 的 objectdatasource 参数
【发布时间】:2013-05-30 20:56:46
【问题描述】:

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

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

【问题讨论】:

标签: c# reflection parameters objectdatasource


【解决方案1】:

我不确定,但你有一个错字……你不是这个意思吗:

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"));
}

希望对你有帮助。

【讨论】:

  • 感谢拼写错误,但不幸的是,仅此而已。我认为真正的问题是我参数 canwrite = false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2018-07-30
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多