繁体   English   中英

使用asp:LinqDataSource的动态列

[英]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是一个很好的解决方案。 您可以从那里的几个表中获取数据。 有关示例,请参阅:

使用LINQ从多个表中选择

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM