Avatar billede carlos123 Nybegynder
17. september 2004 - 13:51 Der er 12 kommentarer og
1 løsning

Hente en værdi fra en repeater

Hej eksperter

Jeg prøver at hente en værdi fra en variable, men det kan tilsyneladende ikke lade sig gøre.
Det jeg gerne vil er at gemme den værdi som Container.DataItem.Atrributes("id").value indeholder.
så jeg kan bruge det i en anden funktion, som skal stå inde i min repeater funktion

en lille ekstra spørgsmål,
hvad betyder # foran Container?

<p><Strong><%#Container.DataItem.Attributes("id").value></Strong></p>
<%
  Dim something as string
   
  something = #Container.DataItem.Attributes("id").value
   
  Response.Write(something)
  Response.Write( "<BR>" )
  Response.Write(something)
  Response.Write( "</BR>" )
%>

håber der er nogen der kan hjælpe mig.

mvh Carl
Avatar billede snepnet Nybegynder
17. september 2004 - 13:56 #1
Du kan oprette en funktion i din kode, og så bare kalde den.

<%# EnMetode(Container.DataItem.Attributes("id").value) >
Avatar billede snepnet Nybegynder
17. september 2004 - 13:57 #2
Du opretter den så der hvor du har dine andre VB-metoder liggende. Bruger du visual studio, og benytter du dig af code-behind ?
Avatar billede carlos123 Nybegynder
17. september 2004 - 14:01 #3
jeg bruger ikke visual studio, dvs. at på min asp side, skal jeg bare oppe i min

<script language="vb" runat="server">
<% #EnMetode(Container.DataItem.Attributes("id").value)>
</script>

hvad betyder # tegnet egentligt?
Avatar billede snepnet Nybegynder
17. september 2004 - 14:07 #4
Her er en komplet fil - du lige kan kigge på.
(læg mærke til at din kode pakkes ind i <script runat="server">)

<%@ Page Language="C#" %>
<script runat="server">
    void Button1_Click(object sender, EventArgs e) {
        this.TextBox1.Text = "hej der";
    }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
        <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
    </form>
</body>
</html>
Avatar billede snepnet Nybegynder
17. september 2004 - 14:13 #5
Jeg tror bare at <%# er syntaksen du skal bruge for at angive at det er noget ASP.NET du er ude i... Den gamle <% er jo sådan set stadig understøttet.
Avatar billede snepnet Nybegynder
17. september 2004 - 14:15 #6
Kan du følge denne her :

<%@ Page Language="VB" %>
<script runat="server">

    Sub Button1_Click(sender As Object, e As EventArgs)
        Me.TextBox1.Text ="Hej der"
    End Sub
   
    Function GiveMeSomething() As String
        GiveMeSomething = "Initial binding"
    End Function
   
    Sub Page_Load(sender As Object, e As EventArgs)
        DataBind()
    End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:TextBox id="TextBox1" runat="server" Text="<%# GiveMeSomething() %>"></asp:TextBox>
        <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
    </form>
</body>
</html>
Avatar billede carlos123 Nybegynder
17. september 2004 - 14:23 #7
Her det jeg prøver at lave


<%@ Register Tagprefix="UserControl" Tagname="SecurePage" Src="../../logout.ascx" %>
<%@ Import Namespace="System.data"%>
<%@ Import Namespace="System.xml"%>
<%@ Page Language="vb" Debug="true" %>


<script language="vb" runat="server">
Dim var as String

function Getpe()
return Repeater1.NodeList.Attributes("id")
end function
   
function ReadNodes()
    Dim xmlfile as XmlDocument = New XmlDocument()
    xmlfile.load(MapPath("materials.xml"))
    Dim Nodelist as XmlNodeList = xmlfile.SelectNodes("list/group")
   
    return Nodelist
end function

function ReadData(type as string) as System.Data.DataRow()
    dim data as New System.Data.DataSet()
    dim specifikfiles as System.Data.Datarow()

    data.ReadXml(MapPath("materials.xml"))
    specifikfiles = data.Tables(1).Select("type='" + type + "'  and (owner = '" + Context.User.Identity.Name + "' or owner='general')")

    return specifikfiles
end function

sub Page_Load
    if Not Page.IsPostBack then
        Repeater1.DataSource() = ReadNodes()
        Repeater1.DataBind()
    end if
end sub

</script>

<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<link rel=Stylesheet type="text/css" media=all href="http://www.3shape.com/CSS/Verdana.css">
</head>

<body bgcolor="#F2F2F1" lang=DA link=black vlink=black style='tab-interval:
65.2pt' alink="#666666">

<p class="grundtekst10pt"><img src="../../../img/download_material_small.jpg" width="88" height="100"><strong><span
lang=EN-GB style='font-size:14.0pt;font-family:Verdana;mso-ansi-language:EN-GB'>
Materials</span></strong></p>


<form>

<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>

    <p><Strong><%#Container.DataItem.Attributes("id").value%></Strong></p>
    <%
    Dim something as string
       
    something = GetType()
    Response.Write(something)
    Response.Write( "<Strong>" )
    Response.Write(something)
    Response.Write( "</Strong>" )
    %>
   
       
       
   
   
</ItemTemplate>
</asp:Repeater>
</form>

<p align="right">   
    <form runat="server">
        <UserControl:Securepage runat="server" ></UserControl:Securepage>
    </form>
</p>

</body>

</html>
Avatar billede snepnet Nybegynder
01. oktober 2004 - 20:30 #8
hov... havde ikke set den her... sorry :o(
Avatar billede snepnet Nybegynder
01. oktober 2004 - 20:39 #9
Ok... jeg tror jeg er med.
Du kan abbonere på et event der hedder ItemDataBound.
Det er en metoder der kaldes for hvert item når det databindes, og du kan der gøre hvad du vil både med dit repeateritem, og du kan også få fat i værdierne i din datakilde... Det kunne f.eks. se sådan her ud :

Private Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
    'hent en værdi fra datagrundlaget
    Dim test As String = CType(e.Item.DataItem, DataRowView).Row(0).ToString()
  End If
End Sub
Avatar billede snepnet Nybegynder
01. oktober 2004 - 20:43 #10
Du kan sådan set gøre hvad som helst der... inklusiv oprette nye kontroller og sætte dem ind i dit item - f.eks. sådan her :

Dim tb As TextBox = New TextBox ()
e.Item.Controls.Add(tb)

(altså... du kunne gøre noget som ovenstående der hvor værdien hentes i den kode jeg sendte lige før).

På den måde kan du så kombinere dig frem til at snuppe en værdi fra datagrundlaget... bruge den til at generere en ny kontrol som du så svinger ind i dit item.

er det forståeligt ?

mvh
Avatar billede snepnet Nybegynder
09. oktober 2004 - 15:48 #11
hej carlos123 - ked af at jeg ikke så dit post der den 17 (det må sige at være en lidt halvlag responstid jeg leverede der :o).
håber at du kunne bruge noget af det til noget, og du får lige et svar her hvis det er tilfældet... ellers må du endelig spørge videre :o)
mvh
Avatar billede carlos123 Nybegynder
18. oktober 2004 - 11:01 #12
Hejsa, jeg endte vist med at lave det på en lidt anden måde, så selve asp funktionen selv generer html syntaxen, på den måde slipper jeg for at kalde variabler nede i selve html. men tak for hjælpen, meget lærerigt.
Avatar billede snepnet Nybegynder
18. oktober 2004 - 13:47 #13
du er meget velkommen, og du spørger bare hvis der er noget omkring det :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester