ログインした関連ユーザーに応じて、特定の行を有効または無効にしたい。したがって、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 にはまだ null 値があります。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;
}
}
}
}
}
このエラーに対して何ができますか? 前もって感謝します。