如何将LINQ查询绑定到gridview的行

本文关键字:gridview 的行 绑定 查询 LINQ | 更新日期: 2023-09-27 17:54:19

我需要将LINQ查询绑定到gridview的行。我试着创建一个像expedia中的矩阵一样的表,在不同的行上有不间断,1站和2站。我不太确定如何将查询绑定到gridview行。谢谢你的帮助。

    var imgquery = from f in XElement.Load(MapPath("flightdata3.xml")).Elements("flight")
                   orderby Convert.ToInt32(f.Element("price").Value)
                   select new
                   {
                       ImagePath = (string)f.Element("airlineimageurl").Value
                   };

    //query for gvMatrix where numberofstops=0
    var numstops0query = from f in XElement.Load(MapPath("flightdata3.xml")).Elements("flight")
                where Convert.ToInt32(f.Element("numberofstops").Value) == 0
                orderby Convert.ToInt32(f.Element("price").Value)
                select new
                {
                    Price = "$" + (Int32)f.Element("price"),
                    ImagePath = (string)f.Element("airlineimageurl").Value
                };
    <asp:GridView ID="gvMatrix" runat="server">
    </asp:GridView>

如何将LINQ查询绑定到gridview的行

我相信你需要从GridView RowDataBound事件调用辅助查询,然后手动填充辅助值字段:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx

然而,似乎你可以得到你正在寻找的SQL连接或子选择。如果您使用的是SQL数据源,我会尝试使用SQL,看看是否可以在单个Select语句中获取数据,然后回过头来看看是否可以将SQL查询转换为适当的LINQ——或者我可以通过存储过程调用它。但是,如果您致力于LINQ,或者如果连接或子选择不起作用,那么RowDataBound是您最好的选择。

我不确定,网格视图会给你所需的功能,因为数据集将绑定到整个网格。您可以在运行时创建HTMl表结构,并且在您创建的每一行上都可以控制它来绑定您拥有的任何linq数据。希望能有所帮助:)

placeHolder.Controls.Clear(); //asp:placeholder holds the table structure.
Table table = new Table();
table.ID = "table";
placeHolder.Controls.Add(table); //adding to place holder
TableRow row = new TableRow();
row.ID ="rowID";
table.Rows.Add(row); //creating first row for first linq dataset
var nonstop0query = from x in obj select new {x.ID, x.Name, x.Age}; //first linq dataset.
//Creating cells for the data returned by the nonstop0query
TableCell cell = new TableCell();
cell.ID = "cell1";
row.Cells.Add(cell);
cell.Text = nonstop0Query[0];
cell = new TableCell();
cell.ID = "cell2";
row.Cells.Add(cell);
cell.Text = nonstop0Query[1];
cell.ID = "cell3";
row.Cells.Add(cell);
cell.Text = nonstop0Query[2];
//Same way can be done for more dataset to bind to row.