roc*_*ace 5 .net c# asp.net gridview rowdatabound
我想根据登录的相关用户启用或禁用特定行.所以我使用rowdatabound事件,但我在这一行有一个错误:
DataRow drv = ((DataRowView)e.Row.DataItem).Row;
Run Code Online (Sandbox Code Playgroud)
在这里,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.Nullable1 [System.DateTime],System.String,System.Nullable .1 [System.Boolean]]'的对象转换为"System.Data.DataRowView".
然后我改变了这一行:
DataRowView drv = e.Row.DataItem as DataRowView;
Run Code Online (Sandbox Code Playgroud)
对于这种情况,它没有给出错误,但是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;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办这个错误?提前致谢.
roc*_*ace 10
我两天前解决了我的问题.我用过这个:
int callID = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "CagriID"));
Run Code Online (Sandbox Code Playgroud)
所有活动:
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)
{
int callID = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "CagriID"));
if (callID == item.CagriID)
{
e.Row.Enabled = false;
continue;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22051 次 |
| 最近记录: |