gpt4 book ai didi

asp.net - 如何将嵌套 List<> 对象中的数据绑定(bind)到嵌套 ListView 控件?

转载 作者:行者123 更新时间:2023-12-02 10:52:45 25 4
gpt4 key购买 nike

所以我有一个 ASP.NET 网页,在其中显示图像识别服务的一些结果。结果采用 OrpObject 类对象的形式(名称无关),其中包含 Labels_texture 类型的 List<>。每个 Labels_texture 对象都包含自己的 Labels_color 类型的 List<>。

我想要做的是使用ListView来显示Labels_texture列表中的每个结果;然后在 ListView 的每个单独元素内,显示与 OrpObject 中的嵌套 Labels_color List<> 中的元素相对应的另一个(嵌套)ListView。

主要的问题是,任何时候这些列表中的元素数量可能是可变的(或者根本没有),因为它们是图像识别服务的结果。 我的主要问题是:如何将 OrpObject 中名为 Labels_color 的内部 List<> 中的数据绑定(bind)到网页中相应的内部 ListView,而无需在设置 DataSource 并为这些对象执行 DataBind() 时指定数组索引内部 ListView ?

希望我能够理解这一切。以下是相关代码片段:

OrpObject:

public class OrpObject
{
public List<texture> Labels_texture { get; set; }

}

public class texture
{
public string detector { get; set; }
public string category { get; set; }
public string matched_url { get; set; }
public List<color> Labels_color { get; set; }
}

public class color
{
public string category { get; set; }
public string categoryID { get; set; }
public string confidence { get; set; }
public string matched_url { get; set; }
}

这是我的 .aspx 文件中的 ListView 代码(为简洁起见,进行了精简)(注意:我是 ASP.NET 新手,我一直盲目地将 runat="server"附加到我的 LayoutTemplate 中的所有内容,以防万一它需要在那里。如果我不需要所有这些,你能让我知道吗?)

<asp:ListView ID="ListView_Orp_Results" runat="server">
<LayoutTemplate>
<div id="outer_result_container" runat="server">
<div id="itemPlaceholder" runat="server">
<div id="result_photo" runat="server">
</div>
<div id="result_category" runat="server">
</div>
<div id="result_detector" runat="server">
</div>
</div>
</div>
<div id="inner_result_container" runat="server">
<asp:ListView ID="ListView_inner_results" runat="server">
<LayoutTemplate>
<div id="outer_result_container" runat="server">
<div id="itemPlaceholder" runat="server">
<div id="inner_result_photo" runat="server">
</div>
<div id="inner_result_category" runat="server">
</div>
<div id="inner_result_categoryID" runat="server">
</div>
</div>
</div>
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
<EmptyDataTemplate>
...
</EmptyDataTemplate>
<EmptyItemTemplate>
...
</EmptyItemTemplate>
</asp:ListView>
</div>
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
<EmptyDataTemplate>
...
</EmptyDataTemplate>
<EmptyItemTemplate>
...
</EmptyItemTemplate>
</asp:ListView>

最后,这是我的代码隐藏文件中的片段,我尝试将 OrpObject 和相应的列表设置为 ListViews 的数据源:

ListView_Orp_Results.DataSource = myOrp.Labels_texture;
ListView_Orp_Results.DataBind();

foreach (texture myTexture in myOrp.Labels_texture)
{
ListView_inner_results.DataSource = myTexture.Labels_color;
ListView_inner_results.DataBind();
}

我知道这里的 foreach 循环可能不起作用...但这是我唯一能想到的确保为 Labels_texture 列表中包含的每个纹理对象生成嵌套 ListView 的事情...

对这本小说深表歉意,并提前感谢您提供的任何意见!

最佳答案

您可以将内部 ListView 的数据源绑定(bind)到绑定(bind)到外部 ListView 的项目的属性。但是,要做到这一点,内部 ListView 必须位于外部 ListView 的项目模板中。

请参阅下面的代码并记下 DataSource='<%# Eval("Labels_color") %>'内部 ListView 的属性。

<asp:ListView ID="ListView_Orp_Results" runat="server" ItemPlaceholderID="itemPlaceholder">
<LayoutTemplate>
<div id="outer_result_container">
<div id="itemPlaceholder" />
</div>
</LayoutTemplate>
<ItemTemplate>
<div id="result_photo">...</div>
<div id="result_category">...</div>
<div id="result_detector">...</div>
<div id="inner_result_container" runat="server">
<asp:ListView ID="ListView_inner_results" runat="server" ItemPlaceholderID="itemPlaceholder" DataSource='<%# Eval("Labels_color") %>'>
<LayoutTemplate>
<div id="outer_result_container" runat="server" >
<div id="itemPlaceholder" runat="server"> </div>
</div>
</LayoutTemplate>
<ItemTemplate>
<div id="inner_result_photo">...
</div>
<div id="inner_result_category">...
</div>
<div id="inner_result_categoryID">...
</div>
</ItemTemplate>
</asp:ListView>
</div>
</div>
</ItemTemplate>
</asp:ListView>

这样你就不需要从后面的代码中绑定(bind)嵌套的 ListView 。只需绑定(bind)主ListView,所有内部ListView都会自动绑定(bind)到绑定(bind)对象的Labels_texture属性

关于runat="server"它是 ASP.NET 控件的必需属性。基本上,这个属性意味着asp.net将解析该标记并创建一个相应的对象。

大多数时候,您不需要在 html 元素(div、p、...)上使用它,但在某些情况下,您可能希望它在后面的代码中操作相应的对象。

关于asp.net - 如何将嵌套 List<> 对象中的数据绑定(bind)到嵌套 ListView 控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090677/

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