我需要将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>
答案 0 :(得分:0)
我相信您需要从GridView RowDataBound事件调用您的辅助查询,然后手动填充您的辅助值字段:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound.aspx
但是,您似乎可以在SQL连接或子选择中获得所需内容。如果您正在使用SQL数据源,我会使用SQL来查看是否可以在单个Select语句中获取数据,然后返回并查看是否可以将SQL查询转换为适当的LINQ - 或者我可能会调用它通过存储过程。但是,如果您致力于LINQ,或者加入或子选择不起作用,那么RowDataBound是您最好的选择。
答案 1 :(得分:0)
我不确定,Grid View会为您提供所需的功能,因为数据集将绑定到整个网格。您可以在运行时创建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.