我想根据登录的相关用户启用或禁用特定行。所以我使用 rowdatabound 事件,但我在这一行有一个错误:
DataRow drv = ((DataRowView)e.Row.DataItem).Row;
在这里,e.Row.DataItem 有相关的行信息。我已经控制并且它具有行值。但是当我想继续时,我会遇到这个错误:
无法将类型为“<>f__AnonymousType0
14[System.Int32,System.Int32,System.String,System.String,System.DateTime,System.String,System.String,System.String,System.String,System.String,System.String,System.Nullable
1[System.DateTime],System.String,System.Nullable`1[System.Boolean]]”的对象转换为类型“System.Data.DataRowView”。
然后我改变了这一行:
DataRowView drv = e.Row.DataItem as DataRowView;
对于这种情况,它没有给出错误,但 drv 仍然具有空值。Dataitem 不分配其值。
在这里,相关的完整代码:
protected void gvListele_RowDataBound(object sender, GridViewRowEventArgs e)
{
dbeDataContext db = new dbeDataContext();
var c = (from v in db.CAGRIs where v.UserID != Convert.ToInt32(Session["user"]) select v).ToArray();
if (c != null)
{
foreach (var item in c)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow drv = ((DataRowView)e.Row.DataItem).Row;
int tempID = Convert.ToInt32(drv["CagriID"].ToString());
if (item.CagriID == tempID)
{
e.Row.Enabled = false;
}
}
}
}
}
我该怎么办这个错误?提前致谢。