我正在使用嵌套转发器构建一个表,原因我不在这里讨论,但我要做的是有两个数据源,一个用于顶级转发器,对应于行,一个用于第二级将在一行内返回单元格的转发器.
然而,我想知道的是,如果我能以某种方式在嵌套转发器的数据源中指定一个参数,该数据源是在第一个数据源的结果中设置了一个字段吗?
我可以将参数设置为数据绑定表达式的值吗?
我想这样做的原因是我有两个存储过程.当页面加载时我有一个会话参数我可以用来运行第一个存储过程,但是,对于第二个存储过程,我需要将顶级转发器的每个实例的值与对第二个存储过程的调用相关联具有不同的参数值.
解决方法
我认为最好的方法是处理外部中继器的ItemDataBound事件,查找内部DataSource控件并为其设置SelectParameter.
void MyOuterRepeater_ItemDataBound(Object sender,RepeaterItemEventArgs e) { // Find the Inner DataSource control in this Row. sqlDataSource s = (sqlDataSource)e.Item.FindControl("InnerDataSource"); // Set the SelectParameter for this DataSource control // by re-evaluating the field that is to be passed. s.SelectParameters["MyParam"].DefaultValue = DataBinder.Eval(e.Item.DataItem,"MyFieldValuetoPass").ToString(); }
有关使用DataList的示例,请查看ASP.NET快速入门here
P.S.:请参阅下面Tony的回复,对上面提到的片段进行重要修正.值得注意的是,检查当前RepeaterItem的ItemType是很重要的.或者,始终检查每个对象上的空值是一种很好的做法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。