private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
WriteUsersInformation((User)grdPersonel.MainView.GetRow(e.RowHandle));
}
我在gridview上使用过滤区域,因此如果用户单击过滤器区域“NullReferenceException未处理”,则会显示错误。我如何区分选择行数据流或过滤器,所以我想放一个控件。我非常喜欢编码,谢谢。
答案 0 :(得分:0)
if (e.RowHandle < 0)
{
//Invalid row
}
else
{
WriteUsersInformation((User)grdPersonel.MainView.GetRow(e.RowHandle));
}
答案 1 :(得分:0)
我认为过滤区域是指自动过滤器行,如果是这样,您可以检查所选行句柄是否等于自动过滤器行句柄
if (e.RowHandle != DevExpress.XtraGrid.GridControl.AutoFilterRowHandle)
{
// your code
}
但我真的建议你写一个更安全的代码,只需检查你的用户对象是否为空。
private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
var user = gridView1.GetRow(e.RowHandle) as User;
if (user == null)
return;
WriteUsersInformation(user);
}
答案 2 :(得分:0)
private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
object oUsr = grdPersonel.MainView.GetRow(e.RowHandle);
if (oUsr is User)
WriteUserInformation((User)oUsr);
}
当最后一个用户点击自动过滤器行时,我的当前对象变为空,我再次使用此代码解决了所有答案。