---
title: "Hämta id/Namn?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/116982-hämta-id-namn"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Jesper T"
published: "2004-11-29T17:12:03.000Z"
updated: "2004-11-29T21:31:42.000Z"
replies: 9
views: 365
page: 1
pages: 1
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/116982-hämta-id-namn"
---

# Hämta id/Namn?

## #1 — Jesper T, 2004-11-29T17:12Z

Tänk er en användarkontroll som läggs in på detta sätt:

```
<myProject:myControl id="[b]myId[/b]" runat="server" />
..
Som t.ex. blir:

<input type="text" id="[b]myId[/b]_txt" />
<input type="button" id="[b]myId[/b]_btn" value="..."/>
```

Hur skall jag då på bästa sätt överföra "myId" (i detta fall) till de olika elementen i min kontroll?

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

## #2 — DavidB, 2004-11-29T17:21Z

om du ärver klassen Control i din kontroll så är det bara att använda sig utav ID

```
namespace MyNamespace {
	public class MyControl : Control {
		protected override void Render(HtmlTextWriter output){
			output.Write("<input type=\"text\" id=\"[b]" + ID + "[/b]_txt\" />");
			output.Write("<input type=\"button\" id=\"[b]" + ID + "[/b]_btn\" value=\"...\"/>")
		}
	}
}
```

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

## #3 — Jesper T, 2004-11-29T17:28Z

Ok, det där är för en anpassad kontroll eller?
Ursäkta att jag är lite novis här va.... :OO

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

## #4 — DavidB, 2004-11-29T17:35Z

anpassad kontroll?

jag tror att i stort sett alla kontroller i asp.net ärver Control så om du ärver någon annan kontroll så fungerar ju det också.

annars kan du ju göra såhär istället:

```
public string id {
	get{
		return id;
	} set{
		id = value;
	}
}
```

sen är det bara att använda sig utav id vart du vill ha det.

hur ser din kod ut?

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

## #5 — Jesper T, 2004-11-29T18:22Z

Det är en datepicker-calenderkontroll som jag vill kunna vara lite mer "dynamisk" (anväda på flera textfält)

```
<%@ Control Language="vb" %>
<script runat="server">
    
    Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged
        myJscript.Text = "<scr" & "ipt type=""text/javascript"">" & _
        "function OnClick()" & _
        "{document.getElementById(""divCalendar"").style.display=(document.getElementById(""divCalendar"").style.display)? ""block"" : ""none"";};" & _
        "</scr" & "ipt>"
        
        TextBox1.Text = Calendar1.SelectedDate.ToShortDateString()
    End Sub
    </script>
    
<asp:TextBox ID="TextBox1" Runat="server" />
<input type="button" id="button1" value="..." onclick="OnClick()">
<br />

<div id="divCalendar" style="display: none; position: absolute">
    <asp:Calendar ID="Calendar1" Runat="server" />
</div>
<asp:Literal ID="myJscript" Runat="server" />
```

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

## #6 — DavidB, 2004-11-29T19:02Z

Om jag inte minns helt fel så får ju varje kontroll ett eget id på .aspx sidan ändå.

Säg att du kör med din kod och lägger in:
\<%@ Register TagPrefix="min" TagName="Kontroll" Src="minkotroll.ascx" %\>

\<min:Kontroll id="**mk**" runat="server"/\>

på din .aspx sida så kommer dina kontroller inuti din kontroll att få följande namn:
**mk**.TextBox1
**mk**.button1
**mk**.Calendar1
**mk**.myJscript

när du vill ha tag på dem från din .aspx sida.

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

## #7 — Jesper T, 2004-11-29T19:26Z

Nja, nästan alla...
Literalen med javascriptet gör det inte, id:t skall ju även in i javascriptfunktionen *function OnClick(id){...}*.
Såg även att den måste läggas i page_load. :)
Och denna är ju statisk:

```
[b]TextBox1[/b].Text = [b]Calendar1[/b].SelectedDate.ToShortDateString()
```

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

## #8 — DavidB, 2004-11-29T19:39Z

Okej,

Din user control ärver i alla fall automatiskt System.Web.UI.Control så då borde det räcka med att lägga in \<%=ID%\> där du vill ha ditt id

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

## #9 — Jesper T, 2004-11-29T21:02Z

Det fick bli en massa kodrenderingsblock.
Känns inte helt bra med det funkar. 
Tack DavidB!

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

## #10 — Jesper T, 2004-11-29T21:31Z

Löste allt så här, så slapp jag dessa: \<%%\>

```
<%@ Control Language="vb" %>
<script runat="server">
    
    Sub page_load(ByVal obj As Object, ByVal e As EventArgs)
        myJscript.Text = _
        "<script type=""text/javascript"">" & vbCr & _
        "function OnClick_" & ID & "(){" & vbCr & _
        "document.getElementById(""" & ID & "_picker"").style.display=(document.getElementById(""" & ID & "_picker"").style.display==""none"")? ""block"" : ""none"";};" & vbCr & _
        "</scr" & "ipt>" & vbCr
        
        mybtn.Attributes.Add("onclick", "OnClick_" & ID & "();")
        
    End Sub
    Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles _cal.SelectionChanged
        _txt.Text = _cal.SelectedDate.ToShortDateString()
    End Sub
    
</script>
<asp:TextBox ID="_txt" Runat="server" />
<input type="button" runat="Server" id="mybtn" value="..." />
<br />
<div id="picker" runat="server" style="display: none; position: absolute">
    <asp:Calendar ID="_cal" Runat="server" />
</div>
<asp:Literal ID="myJscript" Runat="server" />
```

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/116982-hämta-id-namn
