webForumDet fria alternativet

DataGrid OnItemDataBound

9 svar · 371 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

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?

renholmMedlem sedan apr. 20012 266 inlägg
#2

Vad har du för datakälla(DataSet, DataReader, Collection etc.)?

DataGrid ex

int cId = ((System.Data.DataRow)e.Item.DataItem)["cId"];
DavidBMedlem sedan jan. 20001 372 inlägg
#3

Datakällan är en DataTable

renholmMedlem sedan apr. 20012 266 inlägg
#4

Testa mitt exempel, borde fungera för DataTable också.

DavidBMedlem sedan jan. 20001 372 inlägg
#5

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.

renholmMedlem sedan apr. 20012 266 inlägg
#6
int cId = (int)((System.Data.DataRow)e.Item.DataItem)["cId"];
DavidBMedlem sedan jan. 20001 372 inlägg
#7

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);
	}

}
DinoMedlem sedan sep. 20011 914 inlägg
#8
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);
	}

}
DavidBMedlem sedan jan. 20001 372 inlägg
#9

Får samma fel igen :(

DavidBMedlem sedan jan. 20001 372 inlägg
#10

Okej. fick det att fungera med följande kod:

int cId = [B]Convert.ToInt32([/B]((System.Data.DataRowView)e.Item.DataItem)["cId"][b])[/b];
126 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)