[英]Dynamic columns with asp:LinqDataSource
我像这样使用LinqDataSource:
<asp:LinqDataSource ID="LinqDataSource3" runat="server" OnSelecting="LinqDataSource3_OnSelecting">
</asp:LinqDataSource>
我有ASPxGridView
<dxwgv:ASPxGridView ID="ASPxGridView2" ClientInstanceName="ASPxGridView2Client"
runat="server" AutoGenerateColumns="False"
DataSourceID="LinqDataSource3">
</dxwgv:ASPxGridView>
这样我就可以在处理onSelecting事件时动态添加列:
protected void LinqDataSource3_OnSelecting(object sender, LinqDataSourceSelectEventArgs e)
{
MyModelDataContext context = new MyModelDataContext();
ASPxGridView grid = ASPxPageControl1.TabPages[3].FindControl("ASPxGridView2") as ASPxGridView;
if(grid.Columns.Count == 0){
GridViewDataTextColumn txtColumn1 = new GridViewDataTextColumn();
GridViewDataTextColumn txtColumn2 = new GridViewDataTextColumn();
txtColumn1.FieldName = "UserId";
txtColumn2.FieldName = "FirstName";
grid.Columns.Add(txtColumn1);
grid.Columns.Add(txtColumn2);
}
e.Result = from u in context.Users select new { UserId = u.UserId, FirstName = u.FirstName };
}
只是简单地测试一下就可以了,原因是我的想法是拥有一种解决方案,该解决方案可以将linqDataSource用作de ASPxGridView的数据源,但可以连接2或3个表并在此网格中显示结果。
我想问的是它是一个好的解决方案,还是有其他更好的方法可以通过联接来呈现几个表的视图?
第二个问题是我有“用户”和“组”,我想有一个表,其中有两列“名称”和“类型”
对于组,将按组键入,对于用户,将键入user。
我的数据库中没有这样的表
是否可以创建特定的类。 创建该类的对象列表,并使用linq查询填充它,并将其用作该网格的linq数据源?
clas将是:
伪代码:
Class MyClass {
string Type;
string Name;
}
还是有其他方法可以创建这样的表?
非常感谢你再见
回答您的第一个问题,我想告诉您,创建列的代码最好移到Page_Load事件。
至于第二个问题。 我认为在LinqDataSource对象的Selecting事件中提供自定义IQueriable是一个很好的解决方案。 您可以从那里的几个表中获取数据。 有关示例,请参阅:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.