高效的方式绑定嵌套转发器3级深
我有3级深度重复,绑定到以下:
MainCategories – 绑定到顶级中继器
子类别 – 绑定到二级转发器
SubSubCategories – 绑定到第3级的转发器
到目前为止,我通过使用转发器的itemdatabound事件并传递类别ID来实现数据绑定,以便过滤下面的级别(例如:获取MainCategory 1的所有子类别,获取MainCategory2的所有子类别)。 这当然导致许多数据库的访问,并且效率低下。
有没有办法只进行3次查询:1。获取所有主要类别并绑定到顶级rpeater,2。获取所有子类别并以某种方式绑定到第二级中继器3.获取所有子子类别并绑定到第3级中继器。
如何在asp.net c#中实现?
为此,请按以下步骤操作:
首先将数据转换为DataTable,然后说dataTableMainCategories
,然后从dataTableMainCategories
数据表中过滤SubSubCategories
和SubSubCategories
。 最后,在ItemDataBound
下面写下代码块,对于SubSubCategories
和SubSubCategories
DataTable在导入过滤行之前添加所需的列。
将所有主要类别填充到表中并绑定到MainCategory转发器( rptrMainCategories
),并将所有子和子子类填充到dataTableCategories
数据表中。
protected void rptrMainCategories_ItemDataBound(object sender, RepeaterItemEventArgs e) { if(e.Item.ItemType== ListItemType.Item) { int subCategoryID = 5; // Pass your subcategory id to be filtered Repeater rptrSubCategories = (Repeater)e.Item.FindControl("rptrSubCategories"); DataTable dtSubCategory = new DataTable(); dtSubCategory.Columns.Add(); // Add your columns as SubCatagory DataRow[] dataRows = dataTableCategories.Select("SubCategoryID= " + subCategoryID + ""); foreach (DataRow dataRow in dataRows) { dtSubCategory.ImportRow(dataRow); } rptrSubCategories.DataSource = dtSubCategory; rptrSubCategories.DataBind(); } } protected void rptrSubCategories_ItemDataBound(object sender, RepeaterItemEventArgs e) { if(e.Item.ItemType== ListItemType.Item) { int subSubCategoryID = 55; // Pass your subsubcategory id to be filtered Repeater rptrSubSubCategory = (Repeater)e.Item.FindControl("rptrSubSubCategory"); DataTable dtSubSubCategory = new DataTable(); dtSubSubCategory.Columns.Add(); // Add your columns as SubCatagory DataRow[] dataRows = dataTableCategories.Select("SubSubCategoryID= " + subSubCategoryID + ""); foreach (DataRow dataRow in dataRows) { dtSubSubCategory.ImportRow(dataRow); } rptrSubSubCategory.DataSource = dtSubSubCategory; rptrSubSubCategory.DataBind(); } }
更新
如果您使用键入的(自定义类型)数据,则可以通过以下方式选择数据:
//Populate all main categories public List MainCategories { get; set; } //Populate all sub and sub categories public List SubCategories { get; set; }
在事件rptrMainCategories_ItemDataBound
写下代码并绑定到转发器:
List subCategory = SubCategories.Where(c => c.SubCategoryId = yourSubCategoryID); rptrSubCategories.DataSource = subCategory ; rptrSubCategories.DataBind();
在事件rptrSubCategories_ItemDataBound
写下代码并绑定到转发器:
上述就是C#学习教程:高效的方式绑定嵌套转发器3级深分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
List subSubCategory = SubCategories.Where(c => c.SubSubCategoryId = yourSubSubCategoryID); rptrSubSubCategory.DataSource = subSubCategory ; rptrSubSubCategory.DataBind();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1044487.html