webForumDet fria alternativet

OnItemDataBound, OnItemCreate, DataGrid

.NET

5 svar · 440 visningar · startad av maqe

Medlem sedan dec. 2003824 inlägg
Frågan#1

Jag har en ImageButton och när man klickar på den vill jag skicka upp ett javascript "confirm" och det har jag tänkt göra såhär.

private void FileList_itemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
ImageButton delete = (ImageButton)e.Item.FindControl("btnDelete");
delete.Attributes.Add("onclick","return confirm('Delete node?');");
}
}

Eftersom jag använder mig av tapstrip kontrollen från microsoft så kommer jag inte åt datagridens event och får då lägga till eventen manuellt. Och det blir något i den här stilen tror jag

this.FileList.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.itemCreated);

sedan lägger jag till OnItemCreated="itemCreated" i min datagrid men jag får endå felet: ASP.MainContent_ascx innehåller inte en definition för itemCreated

Något jag missat?

Sedan passar jag på att fråga en sak om att lägga till event manuellt ... dom raderas automatiskt av VS.NET har jag märkt ... lägger till event för en knapp manuellt i koden sedan om jag lägger till ett event genom propertiesboxen för kontrollen så försvinner dom eventen jag lagt till manuellt och det är mycket irriterande. Någon som vet hur man kan göra för att komma åt t.ex. en datagrids event om man inte kan se den i designläge?

Medlem sedan nov. 2003569 inlägg
#2

kan du inte loopa igenom alla datagriditems efter att du databound:at den?, och sätta .Attributes.Add() på varje knapp?.

Medlem sedan aug. 200136 inlägg
#3

Prova med att deklarera FileList_itemCreated som public.

Medlem sedan dec. 2003824 inlägg
#4

Stefan Holmberg skrev:

Prova med att deklarera FileList_itemCreated som public.

Nope det fungerade inge vidare tyvärr ... får samma fel ...

Medlem sedan nov. 2003569 inlägg
#5

// Efter DataBound

for(int x=0;x<DataGrid.Items.Count;x++)
	{
		if(DataGrid.Items[x].ItemType==ListItemType.Item||DataGrid.Items[x].ItemType==ListItemType.AlternatingItem)
	{
					DataGrid.Items[x].Cells[3].Attributes.Add("onClick", "javascript:return confirm('Sure?')");
	}
}

Detta funkar alldeles utmärkt

Medlem sedan aug. 200136 inlägg
#6

Stefan Holmberg skrev:

Prova med att deklarera FileList_itemCreated som public.

och använd samma namn i din grid

OnItemCreated="FileList_itemCreated"

253 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)