---
title: "Javascript i datagrid"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/81878-javascript-i-datagrid"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "aleborg"
published: "2003-07-12T18:17:35.000Z"
updated: "2003-07-14T11:23:00.000Z"
replies: 24
views: 495
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/81878-javascript-i-datagrid"
---

# Javascript i datagrid

_Sida 1 av 2._

## #1 — aleborg, 2003-07-12T18:17Z

Min datagrid ser ut så här:

```
<asp:datagrid id="TemplatesDG" runat="server" CssClass="table_600_Grey" AutoGenerateColumns="False" DataKeyField="admin_templateID">
	<HeaderStyle Font-Bold="True"></HeaderStyle>
	<Columns>
		<asp:HyperLinkColumn DataNavigateUrlField="admin_templateID" DataNavigateUrlFormatString="reseller_template_newdit.htm?id={0}" DataTextField="name" HeaderText="Name"></asp:HyperLinkColumn>
		<asp:TemplateColumn>
			<ItemStyle HorizontalAlign="Center" Width="20px"></ItemStyle>
			<ItemTemplate>
				<asp:ImageButton id="edit" runat="server" ImageUrl="images/edit.gif" CommandName="edit" AlternateText="Edit"></asp:ImageButton>
			</ItemTemplate>
		</asp:TemplateColumn>
		<asp:TemplateColumn>
			<ItemStyle HorizontalAlign="Center" Width="20px"></ItemStyle>
			<ItemTemplate>
				<asp:ImageButton ID="Delete" Runat="server" ImageUrl="images/delete.gif" CommandName="delete" AlternateText="Delete"></asp:ImageButton>
			</ItemTemplate>
		</asp:TemplateColumn>
	</Columns>
</asp:datagrid>
```

Och sen har jag följande kod:

```
		private void TemplatesDG_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
		{
			ImageButton delete = new ImageButton();
			delete = (ImageButton)TemplatesDG.FindControl("Delete");
			delete.Attributes.Add("onclick","return confirm('Weee');");
		}
```

men jag får felet:
 System.NullReferenceException: Object reference not set to an instance of an object.
Line 83: 			delete.Attributes.Add("onclick","return confirm('Weee');");

vad gör jag fel??? Har provat flera olika sätt att göra detta på men får alltid fel attributet ska läggas till!

Permalänk: https://www.webforum.nu/p/81878

## #2 — Dino, 2003-07-12T20:11Z

Detta skall funka, du får konvertera det till c#.

```
dim grr as ImageButton = e.Item.Cells(2).Controls.Item(1)
grr.Attributes.Add("onclick", "return confirm('Weee');")
```

Permalänk: https://www.webforum.nu/p/1108427

## #3 — aleborg, 2003-07-12T20:15Z

Har testat det med, får samma fel!

Permalänk: https://www.webforum.nu/p/1108428

## #4 — Dino, 2003-07-12T20:38Z

Har nu testat efter din datagrid utseende och då funkar detta. Om det inte funkar för dig så vet jag inte vad som är fel.

```
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
   Dim grr As ImageButton = DirectCast(e.Item.Cells(2).Controls.Item(1), ImageButton) 'e.Item.FindControl("delete") skall funka det med
   grr.Attributes.Add("onclick", "javascript:alert('hej')")
End If
```

Permalänk: https://www.webforum.nu/p/1108438

## #5 — renholm, 2003-07-12T20:39Z

Detta borde funka (dock från huvudet med hjälp av ClassBrowsern)

```
if (e.Item.ItemType == ListItemType.Item)
{
	ImageButton delete = (ImageButton)e.Item.FindControl("Delete");
	delete.Attributes.Add("onclick","return confirm('Weee');");
}
```

Permalänk: https://www.webforum.nu/p/1108439

## #6 — aleborg, 2003-07-12T20:59Z

Tack renholm, det var if-satsen jag saknade!

Permalänk: https://www.webforum.nu/p/1108450

## #7 — renholm, 2003-07-12T21:09Z

Glöm inte att tacka Dino, faktiskt ca 1 minut före :)

Permalänk: https://www.webforum.nu/p/1108458

## #8 — aleborg, 2003-07-13T06:30Z

Tack Dino :D

Permalänk: https://www.webforum.nu/p/1108559

## #9 — aleborg, 2003-07-13T08:24Z

Om jag vill vidareutveckla det här: 

```
if(e.Item.ItemType == ListItemType.Item)
{
	ImageButton delete = (ImageButton)e.Item.FindControl("Delete");
	delete.Attributes.Add("onclick","return confirm('Are you sure you want to delete "+ name+"');");
}
```

och få in fältet  "name" från databasen, hur gör jag då? Kan man lägga den i CommandArgument och hämta det därifrån?

Permalänk: https://www.webforum.nu/p/1108575

## #10 — Dino, 2003-07-13T11:01Z

```
if(e.Item.ItemType == ListItemType.Item)
{
   ImageButton delete = (ImageButton)e.Item.FindControl("Delete");
   delete.Attributes.Add("onclick","return confirm('Are you sure you want to delete "+ name+"');");
   [B]delete.CommandArgument = e.Item.DataItem("name")[/B]
}
```

Permalänk: https://www.webforum.nu/p/1108619

## #11 — aleborg, 2003-07-13T11:07Z

Jag vill alltså få in namnet här:
'Are you sure you want to delete "+ name+"?'

Permalänk: https://www.webforum.nu/p/1108621

## #12 — Dino, 2003-07-13T11:09Z

?

```
if(e.Item.ItemType == ListItemType.Item)
{
   ImageButton delete = (ImageButton)e.Item.FindControl("Delete");
   delete.Attributes.Add("onclick","return confirm('Are you sure you want to delete "+ [B]e.Item.DataItem("name")[/B] + "');");
}
```

Permalänk: https://www.webforum.nu/p/1108623

## #13 — aleborg, 2003-07-13T11:22Z

Provade det med men får felet: 
(93): 'System.Web.UI.WebControls.DataGridItem.DataItem' denotes a 'property' where a 'method' was expected

Permalänk: https://www.webforum.nu/p/1108631

## #14 — Dino, 2003-07-13T11:45Z

Hmm, det funkar för mig, men testa detta då.

```
((DataRowView)e.Item.DataItem).Row.ItemArray[1].ToString();
```

Permalänk: https://www.webforum.nu/p/1108635

## #15 — aleborg, 2003-07-13T11:49Z

Det funkade tack :D

Permalänk: https://www.webforum.nu/p/1108636

## #16 — renholm, 2003-07-13T18:39Z

Tror det är så här
VB: e.Item.DataItem("name") 
C#: e.Item.DataItem\["name"\]

Permalänk: https://www.webforum.nu/p/1108861

## #17 — aleborg, 2003-07-14T07:43Z

på Dinos kod får jag 
System.NullReferenceException: Object reference not set to an instance of an object. 
när jag klickar på ett objekt i datagriden
på e.Item.DataItem\["name"\] får jag:
Cannot apply indexing with \[\] to an expression of type 'object'

Permalänk: https://www.webforum.nu/p/1109049

## #18 — renholm, 2003-07-14T08:57Z

Ops, är mer åt Dinos håll du ska gör :)

Testa detta då: 

```
((DataRowView)e.Item.DataItem)["name"]
```

Permalänk: https://www.webforum.nu/p/1109079

## #19 — aleborg, 2003-07-14T09:53Z

får samma fel!
System.NullReferenceException: Object reference not set to an instance of an object.
delete.Attributes.Add("onclick","return confirm('Are you sure you want to delete "+((DataRowView)e.Item.DataItem)\["name"\]+"?');");

en annan sak mitt i allt, jag försöker kolla så att ett fält är ifyllt mha if(name.Value.Trim()==null) men den reagerar inte om fältet är tomt(helt annan sida ej att förknippa med ovanstående kod!)

Permalänk: https://www.webforum.nu/p/1109107

## #20 — Dino, 2003-07-14T10:11Z

1\. Fick oxå det felmeddelandet i koden igår, väntade just på att du skulle ta upp det. Har inte riktigt kollat på det, men har för mig att det beror på att kontrollen inte klarade postbacken. Någon annan vet säkert bättre. :)

2\. Använd validatorer.

Permalänk: https://www.webforum.nu/p/1109122

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/81878-javascript-i-datagrid  
Nästa sida: https://www.webforum.nu/amne/dotnet/81878-javascript-i-datagrid/page2.md
