webForumDet fria alternativet

OnItemDataBound, OnItemCreate, DataGrid

5 svar · 438 visningar · startad av maqe

maqeMedlem sedan dec. 2003824 inlägg
#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?

NöffMedlem 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?.

Stefan HolmbergMedlem sedan aug. 200136 inlägg
#3

Prova med att deklarera FileList_itemCreated som public.

maqeMedlem 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 ...

NöffMedlem 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

Stefan HolmbergMedlem 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"

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)