gpt4 book ai didi

c# - 我正在尝试学习如何将 IEnumerable LINQ 集合绑定(bind)到转发器

转载 作者:可可西里 更新时间:2023-11-01 09:02:37 26 4
gpt4 key购买 nike

我使用 LINQ 从字符串数组创建了一个 IEnumerable 赛车手列表,如下所示:

string[] driverNames = {
"Lewis Hamilton",
"Heikki Kovalainen",
"Felipe Massa",
"Kimi Raikkonen",
"Robert Kubica",
"Nick Heidfeld",
"Fernando Alonso",
"Nelson Piquet Jr",
"Jarno Trulli",
"Timo Glock",
"Sebastien Bourdais",
"Sebastien Buemi",
"Mark Webber",
"Sebastian Vettel",
"Nico Rosberg",
"Kazuki Nakajima",
"Adrian Sutil",
"Giancarlo Fisichella",
"Jenson Button",
"Rubens Barrichello"
};

IEnumerable<string> result = from driver in driverNames
orderby driver
select driver;

我现在只是保持简单。

然后我将它绑定(bind)到 ASP.NET GridView,如下所示:

GV_CurrentF1Drivers.DataSource = result;
GV_CurrentF1Drivers.DataBind();

这很好用。现在我想采用相同的输出(结果)并将其绑定(bind)到转发器,但无论我尝试什么,我都无法让转发器工作,我想我缺少对 LINQ 的一些关键理解以及它如何与 ASP.NET 一起工作.

下面是完整的 aspx 页面,显示了到目前为止我已经完成的工作。请有人(如果可能的话,轻轻地)引导我回到正轨?

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Example1.aspx.cs" Inherits="Example1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="float: left;">
<asp:GridView ID="GV_CurrentF1Drivers" runat="server" />
</div>
<div style="float: left;">
<asp:Repeater ID="R_CurrentF1Drivers" runat="server">
<ItemTemplate>
<%# Eval("driver") %></ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>

我使用以下代码将结果绑定(bind)到 Repeater:

R_CurrentF1Drivers.DataSource = result;
R_CurrentF1Drivers.DataBind();

当我尝试运行带有 Repeater 的页面时出现以下错误:

异常详细信息: System.Web.HttpException:DataBinding:“System.String”不包含名为“driver”的属性。

最佳答案

您将返回一个没有名称的可枚举字符串。如果你想使用属性名称驱动程序,你可以创建一个匿名类型并说:

var result = from driver in driverNames
orderby driver
select new { Driver = driver };

然后进行数据绑定(bind)。

相信你也可以Eval(".")评估对象本身而不是属性。同样正如下面很多人所说,您可以使用 <%# Container.DataItem %> .

关于c# - 我正在尝试学习如何将 IEnumerable LINQ 集合绑定(bind)到转发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/831568/

26 4 0