3

我们目前在 aspx 页面中使用asp:Repeaterwith来显示数据。<%#Eval("SomeField")%>

我们想使用单个记录并将其绑定到 aspx 页面上的 asp.net 控件,以便我们可以<%#Eval("SomeField")%>

我尝试过FormView,DetailsView和其他 asp.net 控件。所有这些都需要一个.ToList()or IEnumerable。然而,我们正在返回ctx.Jobs.SingleOrDefault(j => j.ID == id);

我们不想使用 asp:Label 或 asp:Literal ..

<%#Eval("SomeField")%>在返回单条记录时,我们可以做什么来使用页面中的 ?

主持人

    public static Job GetByID(int id)
    {
        using (var ctx= new CareersEntities())
        {
            return ctx.Jobs.SingleOrDefault(j => j.ID == id);
        }
    }

代码隐藏

protected void Page_Load(object sender, EventArgs e)
{
       Job d = new Job();
        d = JobPresenter.GetByID(ID);

        fvJob.DataSource = d;
        fvJob.DataBind();
}

ASPX 页面

<asp:FormView  ID="fvJob" runat="server">
     <ItemTemplate>
        <%#Eval("Title")%>
     </ItemTemplate>
</asp:FormView>
4

2 回答 2

2

如果使用数据源控件(例如 ObjectDataSource),则两者都DetailsView将与单个对象一起使用。FormView使用 ObjectDataSource,您可以从 Select 方法返回单个元素,然后数据源会将其包装在一个列表中,只是为了编程接口——但这不是您所见过的。

如果要直接设置控件的 DataSource 属性并调用 DataBind,只需将对象包装在一个数组中,然后将其传入即可。

这是详细信息视图:

<asp:DetailsView runat="server" ID="DetailsView1" AutoGenerateRows="false">
    <Fields>
        <asp:TemplateField HeaderText="First name:">
            <ItemTemplate><%# Eval("FirstName") %></ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Last name:">
            <ItemTemplate><%# Eval("LastName") %></ItemTemplate>
        </asp:TemplateField>
    </Fields>
</asp:DetailsView>

这是 Page_Load 中的 DetailsView 绑定代码:

var person = new Person { FirstName = "John", LastName = "Doe" };
DetailsView1.DataSource = new object[] { person };
DetailsView1.DataBind();

或者这里是一个 FormView:

<asp:FormView runat="server" ID="FormView1">
    <ItemTemplate>
        First name: <%# Eval("FirstName") %><br />
        Last name: <%# Eval("LastName") %><br />
    </ItemTemplate>
</asp:FormView>

这是 Page_Load 代码:

var person = new Person { FirstName = "John", LastName = "Doe" };
FormView1.DataSource = new object[] { person };
FormView1.DataBind();

这是模型类型(在 DetailsView 和 FormView 中相同):

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
于 2013-02-22T00:45:41.320 回答
0

详细信息视图需要列表?!无论如何,你为什么不使用 ctx.Jobs.SingleOrDefault(j => j.ID == id).ToList() ?

于 2013-02-22T00:40:55.033 回答