我想在asp:repeater的ItemDataBound事件期间获取数据绑定的项目.
我尝试了以下(在stackoverflow问题中这是一个不可接受的答案):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Object dataItem = e.Item.DataItem;
...
}
Run Code Online (Sandbox Code Playgroud)
但是e.Item.DataItem没有.
如何在名为ItemDataBound的事件期间访问被绑定数据的项目.我假设事件ItemDataBound发生在一个项目是数据绑定时.
我想得到这个对象,所以我可以采取措施控制它的显示方式,此外该对象可能还有其他有用的属性,让我可以丰富它的显示方式.
工具有正确的答案.答案是e.Item.Data只有在e.Item.ItemType(Item,AlternatingItem)时才有效.其他时候它无效.在我的例子中,我在标题(或页脚)行期间收到ItemDataBound事件,其中没有DataItem:
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
// if the data bound item is an item or alternating item (not the header etc)
if (e.Item.ItemType != ListItemType.Item &&
e.Item.ItemType != ListItemType.AlternatingItem)
{
return;
}
Object dataItem = e.Item.DataItem;
...
}
Run Code Online (Sandbox Code Playgroud) 我需要一种在代码隐藏中强制回发或页面重新加载的方法.尝试使用一些JavaScript,但没有让它工作.浏览网页我看到第一个问题是"为什么"?
情况是我在autopostback上有一个下拉列表,gridview数据源的select参数是从该下拉列表的选定值派生的.因此,页面正常工作正常,并且每当更改所选项目时内容都会更新.但是一些链接和按钮将客户从页面上移开,以便稍后链接回来.
我们的想法是将最后一个选项存储在会话中,并在会话选项不是默认值时检查第一个page.load事件.现在我可以根据它更改下拉列表的selectedindex,但显然数据源触发的速度比page.load快,所以除非我可以强制重新加载,否则这无济于事.
有任何想法吗?完整页回发/重新加载当然不是唯一的选择,只是强制gridview/datasource刷新就足够了.除了重新加载整个页面之外,我只是不知道该怎么做.
谢谢.