Vad har du för datakälla(DataSet, DataReader, Collection etc.)?
DataGrid ex
int cId = ((System.Data.DataRow)e.Item.DataItem)["cId"];
9 svar · 373 visningar · startad av DavidB
Tjena
Har en DataGrid som anropar en funktion med OnItemDataBound
i denna funktion vill jag få ut värden från en kolumn i den aktuella
raden som "binds".
Har kommit såhär långt:
public void bldM(object sender, DataGridItemEventArgs e){
int cId = e.Item.DataItem("cId");
}
Får felet:
Compiler Error Message: CS0118: 'System.Web.UI.WebControls.DataGridItem.DataItem' denotes a 'property' where a 'method' was expected
Har försökt lösa det genom att ändra koden på diverse olika sätt
utan större framgång. Någon som ser en lösning?
Vad har du för datakälla(DataSet, DataReader, Collection etc.)?
DataGrid ex
int cId = ((System.Data.DataRow)e.Item.DataItem)["cId"];
Datakällan är en DataTable
Testa mitt exempel, borde fungera för DataTable också.
När jag testar får jag felet:
Cannot implicitly convert type 'object' to 'int'
och när jag sedan försöker konvertera detta till int så får jag följande:
System.InvalidCastException: Specified cast is not valid.
int cId = (int)((System.Data.DataRow)e.Item.DataItem)["cId"];
får samma fel som innan:
System.InvalidCastException: Specified cast is not valid.
Här är hela koden:
public void bldM(object sender, DataGridItemEventArgs e){
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
DataGrid dg = new DataGrid();
int cId = (int)((System.Data.DataRow)e.Item.DataItem)["cId"];
WebSiteData wsd = new WebSiteData();
dg.DataSource = wsd.GetCategories(cId);
dg.DataBind();
e.Item.Cells[2].Controls.Add(dg);
}
}
public void bldM(object sender, DataGridItemEventArgs e){
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
DataGrid dg = new DataGrid();
int cId = (int)((System.Data.[b]DataRowView[/b])e.Item.DataItem)["cId"];
WebSiteData wsd = new WebSiteData();
dg.DataSource = wsd.GetCategories(cId);
dg.DataBind();
e.Item.Cells[2].Controls.Add(dg);
}
}
Får samma fel igen :(
Okej. fick det att fungera med följande kod:
int cId = [B]Convert.ToInt32([/B]((System.Data.DataRowView)e.Item.DataItem)["cId"][b])[/b];