我有一个显示网格的数据绑定控件。网格绑定到linq到sql数据源。我使用以下代码:
PaymentsDataContext data = new PaymentsDataContext();
var q = from act in data.activations
where act.approved != true
orderby act.activationDate ascending
select new {activationID = act.activationID, userName = act.userName,
brokerName = act.broker.brokerName, existingAccount = act.existingAccount,
activationDate = act.activationDate, brokerUser = act.brokerUser, approved = act.approved};
activationPending.DataSource = q;
activationPending.DataBind();
我想在网格中添加另一列。我想显示用户的电子邮件地址。 我这样得到了:
var member = System.Web.Security.Membership.GetUser(username);
string email = member.Email;
我如何将其添加为网格中的字段,因为它根本不在付款数据库中?
答案 0 :(得分:2)
试试这个:
var q = from act in data.activations
where act.approved != true
orderby act.activationDate ascending
select new {activationID = act.activationID, userName = act.userName,
brokerName = act.broker.brokerName,
existingAccount = act.existingAccount,
activationDate = act.activationDate, brokerUser = act.brokerUser,
approved = act.approved,
email = System.Web.Security.Membership.GetUser(act.userName).Email };
因为您已经将q
而不是data.activations
分区,所以这会将外部列添加到网格中。
编辑: 由于新添加的列,网格视图的模板必须有一个位置 要接受它,您可以手动添加:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true">
<Columns>
.
.
<asp:BoundField DataField="email" HeaderText="email"
SortExpression="email" />
.
.
</Columns>
</asp:GridView>
或将名为AutoGenerateColumns的gridview的属性设置为true
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true">
</asp:GridView>
答案 1 :(得分:0)
您可以编写Extension方法并在select中使用它。请检查此topic
private Func<DataClasses.Activations, String> GetUserEmail(string username)
{
return System.Web.Security.Membership.GetUser(username).Email;
}
PaymentsDataContext data = new PaymentsDataContext();
var q = from act in data.activations
where act.approved != true
orderby act.activationDate ascending
select new {activationID = act.activationID, userName = act.userName,
brokerName = act.broker.brokerName, existingAccount = act.existingAccount,
activationDate = act.activationDate, brokerUser = act.brokerUser, approved = act.approved,
Email = GetUserEmail(act.username)};