我正在使用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个表并在此网格中显示结果。
我想问的是,它是否是一个好的解决方案,还是有其他更好的方式通过加入来呈现几个表格中的一些观点?
第二个问题是我有用户和组,我希望有一个表,其中我将有两列名称和类型
对于组类型,按类别,用户类型将是用户。
我的数据库中没有这样的表
是否可以创建特定的类。创建该类的对象列表并使用linq查询填充它并将其用作该网格的linq数据源?
clas将是:
伪代码:
Class MyClass {
string Type;
string Name;
}
还是有其他方法来创建这样的表吗?
非常感谢你的帮助再见
答案 0 :(得分:1)
回答您的第一个问题,我想告诉您,创建列的代码最好转移到Page_Load事件。
至于你的第二个问题。我认为在LinqDataSource对象的Selecting事件中提供自定义IQueriable是一个很好的解决方案。您可以从那里的几个表中获取数据。有关示例,请参阅: