当前位置: 首页 > 编程语言 > C#

如何在asp.net中嵌套转发器分享

时间:2023-04-11 12:10:00 C#

C#学习教程:如何在asp.net中嵌套转发器html方面很好,这是我需要帮助的绑定和代码。我只能找到使用sql数据源的示例,这并没有什么帮助。我的转发器看起来是这样的:希望我需要做的是相当清楚的——h4规则应该出现一次,属于该学科的所有条目都列在下面,然后是下一个h4,然后是适当的列表,下一个h4,等等.数据源是在代码隐藏中创建的数据视图,其中每一行都有一个“名称”、“链接”、“NOtation”和“Discipline”。我已将数据视图绑定到最外层的转发器,它按预期工作-为每个条目列出了规则名称,但内部转发器中没有显示任何数据。我如何使这项工作?编辑:澄清一下,我在代码隐藏中有一个数据表。此表中的每一行都是一个项目,每个项目都属于一个学科。我想使用外部转发器列出学科并在内部列出每个学科下分组的项目。像这样:DISCIPLINE1DISCIPLINE2DISCIPLINE3目前,将数据表绑定到外部转发器给出了这个(示例使用上面的数据):DISCIPLINE1DISCIPLINE1DISCIPLINE1DISCIPLINE2DISCIPLINE2DISCIPLINE3DISCIPLINE3我按照OnItemDataBound中的建议使用在外部中继器上,作为测试用例,我可以访问数据:protectedvoidrptDiscipline_ItemDataBound(ObjectSender,RepeaterItemEventArgse){字符串名称=drView["名称"]作为字符串;stringlink=drView["Link"]作为字符串;stringnotation=drView["Notation"]作为字符串;Response.Write(name+link+notation+"")}所以数据就在那里,这正是我希望看到的,我只是不能将它绑定到内部转发器。如果有更有效的方法来实现相同的目标,我很乐意重新设计我的解决方案。在外部控件上,像这样使用ItemDataBound事件:...然后,在代码隐藏中,处理rptDiscipline_ItemDataBound事件并手动绑定内部转发器。重复器的ItemDataBound事件为每个重复项触发一次。所以你会做这样的事情:例如DataRow。//获取内部中继器:RepeaterrptPrograms=(Repeater)e.Item.FindControl("rptPrograms");//将内部中继器的数据源设置为所需的任何值。rptPrograms.DataSource=...rptPrograms.DataMember=...rptPrograms.DataBind();编辑:更新以匹配您的问题更新。您需要将外部转发器绑定到一个数据源,该数据源每项只需要一条记录供转发器呈现。这意味着数据源需要是一个集合/列表/数据表/等等,其中只有学科。在您的情况下,我建议从DataTable获取内部集合的列表规则,并将外部转发器绑定到该集合。然后,内部转发器使用ItemDataBound事件绑定到DataTable中的数据子集。要获取子集,请通过DataView筛选DataTable。这是代码:protectedvoidPage_Load(objectsender,EventItemse){//获取数据表DataTabletable=...if(!IsPostBack){//获取不同的学科列表Listdisciplines=newList();foreach(表中的DataRow行){stringdiscipline=(string)row["Discipline"];如果(!disciplines.Contains(discipline))disciplines.Add(discipline);}disciplines.Sort();//绑定外层中继器rptDiscipline.DataSource=disciplines;rptDiscipline.DataBind();}}protectedvoidrptDiscipline_ItemDataBound(ObjectSender,RepeaterItemEventArgse){//要获取您的数据项,请将e.Item.DataItem强制转换为//您用于数据对象的任何内容stringdiscipline=(string)e.Item.DataItem;//获取内部中继器:RepeaterrptPrograms=(Repeater)e.Item.FindControl("rptPrograms");//创建数据的筛选视图,仅显示//此行所需的规程//表是最初绑定到外部repe的数据表aterDataViewdv=newDataView(table);dv.RowFilter=String.Format("Discipline='{0}'",discipline);//将内部转发器的数据源设置为它需要的任何值。rptPrograms.DataSource=dv;rptPrograms.DataBind();如果您不想在ItemDataBound事件上执行此操作,如果它是这样一个集合,您也可以通过绑定到父级的子属性在页面中内联执行此操作:OuterContent:'>首先您需要两个列表,主题列表,然后是将规则列表绑定到外部转发器的所有数据数据的列表。如果有6个科目,复读机要复读6次。以上就是C#学习教程:如何在asp.net中嵌套中继器的全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——");//你要绑定本学科相关的所有数据DataRowViewdrView=(DataRowView)e.Item.DataItem;stringdiscipline=drView["Discipline"]作为字符串;//用符合规则的数据过滤你的总数据inner.DataSource=//数据在这里绑定过滤后的列表inner.DataBind();}本文收集自网络,不代表立场,如有侵权请点右联系管理员删除。如需转载请注明出处: