1

我有一个带有多个 LinqDataSources 的 .aspx 页面。LinqDataSource 基于页面上的其他控件绑定到 GridView 和/或 WebDataGrid。网格也可以被过滤,这可能会显示更少的结果。

数据源都动态绑定到网格(一次只有一个)。它们依赖于不同的上下文和表格。但是,所有数据源都有一个电子邮件地址列。无论 LinqDataSource 是什么,我都想从网格中检索电子邮件地址。

我完全迷路了。我尝试将 LinqDS 转换为各种数据视图、数据表、列表、数组、字符串。这会导致错误和空对象。我仍在尝试使用反射来解决问题,但这真的有必要吗?我试过摆弄e.ResultLinqDSSelected/Selecting事件中的 ,但最终只得到一个DynamicClass1没有方法的对象。

我想避免必须为每个 LinqDataSource 进行特定查询(手动)。我宁愿将当前绑定的 LinqDataSource 转换为可用的东西(表、数组、字符串列表、任何东西),以便我可以访问“电子邮件”列(甚至第一列,假设“电子邮件" 始终是第一列)。

我有哪些选择?我对这一切都错了吗?我仍在学习 Linq-to-SQL,这只是一个小项目,因此可以选择迁移到实体框架或其他东西。

我要做的就是访问每个 LinqDataSource 中存在的这些电子邮件地址!我正在使用 VS2013 和 ASP.NET 4.0。

4

1 回答 1

1

There may be a better way, but you can use reflection in the "selected" event of the datasource. This assumes that the email address column is named "emailAddress".

protected void LinqDataSource1_Selected(object sender, System.Web.UI.WebControls.LinqDataSourceStatusEventArgs e)
{
    var results = (IEnumerable<object>) e.Result;
    var emailList = results.Select(ex => ex.GetType().GetProperty("emailAddress").GetValue(ex, null)).ToList();
}
于 2013-11-06T16:56:24.373 回答