在前台Repeater控件中用<%=one%>写一个变量!
然后在后台代码的ItemDataBound事件中给这个变量赋值
private void myDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
one=e.Item.ItemIndex;
}
}
为何结果是每行输出的变量one的内容都是最后一行的行数?
然后在后台代码的ItemDataBound事件中给这个变量赋值
private void myDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
one=e.Item.ItemIndex;
}
}
为何结果是每行输出的变量one的内容都是最后一行的行数?
先绑定数据,绑定后执行ItemDataBound事件,然后显示该项内容?这样一项一项执行下来,我的这个变量值也应该会递增显示出来才对啊?
难道是执行完所有项的ItemDataBound事件后再显示出所有的项吗?(如果这样理解是那么显示出来的变量值为最后一行的值就是对的了)
上面两种执行顺序是哪种正确呢?望高手解答
设一个断点就知道了
>> <%#one%>其实不用这么麻烦
只需要在前台添加一个模板列,绑定ItemIndex+1就可以了
<asp:TemplateColumn HeaderText="选择">
<ItemTemplate>
<%# Container.ItemIndex+1%>
</ItemTemplate>
</asp:TemplateColumn>