您的位置:首页 > 其它

ListView 中的一个低级 BUG

2008-06-26 17:36 267 查看
/*from: /article/5049748.html */

今天在使用ListView编辑记录时,遇到问题:
在ItemEditing事件中使用EditItem属性经常为null,

protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.InsertItemPosition = InsertItemPosition.None;
ListView1.EditIndex = e.NewEditIndex;//e.NewEditIndex为0时,ListView1.EditItem总会为null
if (ListView1.EditItem != null)
{
//
}
}

调试了半天才发现,只要当EditIndex=0时(即编辑第一条记录)EditItem属性总是为空
用Reflector反射ListView的EditItem查到原因代码如下:(this._editIndex > 0应该改为this._editIndex >= 0)

public virtual ListViewItem EditItem
{
get
{
if ((this._editIndex > 0) && (this._editIndex < this.Items.Count))
{
return this.Items[this._editIndex];
}
return null;
}
}
后来Google了一下,发现园子里早有朋友反映了这个BUG (第一次用ListView,就抓到BUG),可MS到目前仍未修复。。。
临时的解决方法:用ListView1.Items[ListView1.EditIndex]代替ListView1.EditItem
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: