gpt4 book ai didi

c# - 您如何手动将复杂对象数据绑定(bind)到模板化控件,例如 gridview 中的一行?

转载 作者:行者123 更新时间:2023-11-30 15:50:20 24 4
gpt4 key购买 nike

我在这里纠结于数据绑定(bind)语法。例如我有这样的数据结构 -

public class Course{

public string CourseName {get;set;}

public string CourseCode {get;set;}

public List<Instructor> InstructorsTeaching{get;set;}

}

public class Instructor{

public string InstructorName{get;set;}

public string InstructorCode{get;set;}

}

现在如果我想绑定(bind)这个 List Courses 来手动说一个 gridview,我可以这样做

<asp:TextBox runat="server" ID="tbCourseName" Text='<%# Bind("CourseName")%>'/>

虽然指定了网格的编辑模板,但我如何绑定(bind) Instructors 教学属性以在同一行中说一个 ListBox,我无法弄清楚语法,这是我尝试过但失败的例子

<asp:ListBox runat="server" ID="tbInstructors" 
DataSource='<%# Eval("InstructorsTeaching") as List<Instructor> %>'>
<asp:ListItem Text='<%# Bind("InstructorCode")%>'
Value='<%# Bind("InstructorName")%>'/>...
<as:ListBox/>

我上面的代码肯定不能工作:)。理想情况下,我想在标记中而不是在代码中执行此操作。

最佳答案

您找到了 ASP.NET 2 向数据绑定(bind)糟糕的一个主要原因:您真的不能进行嵌套的 2 向数据绑定(bind)。

一方面,虽然您可以使用 Eval 来实现,但 ASP.NET 不允许使用 Bind 表达式的嵌套图形语法(即 <%# Bind("Customer.FirstName") %>)。

除此之外,对于像您的场景这样的嵌套列表控件,每个列表都需要一个额外的数据源控件。您正在 ListBox 上设置 DataSource,这将适用于 Eval 表达式,但要使绑定(bind)表达式起作用,您必须使用 DataSourceID 来提供提供内部结果集的 DataSource 控件的 ID。即便如此,您的结果也会很糟糕,因为您一次只能更新一个数据源。

双向数据绑定(bind)可能是在考虑 SqlDataSource 而不是 ObjectDataSource 的情况下编写的。如果您有一个多级对象图,您会发现使用双向数据绑定(bind)很痛苦。

关于c# - 您如何手动将复杂对象数据绑定(bind)到模板化控件,例如 gridview 中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com