Avatar billede drakwing Nybegynder
15. juni 2003 - 09:34 Der er 24 kommentarer og
1 løsning

Overføre variabler fra Datagrid til en Sub

Jeg har en Datagrid hvor jeg skal have overført flere variabler (som kommer fra en db og bliver udskrevet i min datagrid) til en SUB Rutine, ved klik på en Button med en "onclick" event på.

Jeg har prøvet at lægge mine variabler i både asp:label og i et input text felt, men det virker ikke.

Lidt hjælp ?
Avatar billede burningice Nybegynder
15. juni 2003 - 11:18 #1
dvs. at du altså skal have overført det som står i dit dg, til en sub ?

Hvordan ser din OnClick-rutine ud?
Avatar billede drakwing Nybegynder
15. juni 2003 - 11:55 #2
Ja det er lige netop hvad jeg skal

her er min forløbige rutine

Public Sub AddToBasket(Src As Object, Args As CommandEventArgs)
   
    ':::::::::::::::::::::::::Her en en dns-less connection
    Dim sConnectString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=DemoShop;Option=16834"
    Dim MyConnection As New OdbcConnection(sConnectString)
    MyConnection.Open()
       
    '::::::::::::::::::::::::::SQL string til at tilføje varene til kurven
    'Dim NavnColumn as TableCell = e.Item.Cells(1)
   
    Dim MySQLstr2 As String = "INSERT INTO basket (basketid,navn) VALUES ('" & Session("BasketID") & "' , '" & Request.Form("Name") & "')"
   
    Response.write(MySQLstr2)
   
    '::::::::::::::::::::::::::Skriv den nye Record til databasen
    Dim MyOdbcCommand = New OdbcCommand(MySQLstr2, MyConnection)   
    MyOdbcCommand.ExecuteNonQuery()
    MyConnection.Close()
End Sub
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:02 #3
det er Request.Form("Name") der skal tages fra mit DG
Avatar billede burningice Nybegynder
15. juni 2003 - 12:10 #4
prøv

Dim Navn as String = CType(e.Item.FindControl("Name"), TableCell).Text
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:11 #5
Name 'e' is not declared.
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:13 #6
Name er jo bare et input text felt, som får værdi fra DG vha.
<asp:TextBox id="Name" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "navn") %>' readonly="true"/>

min DG ser sådan her ud

    <Columns>


    <asp:TemplateColumn HeaderText="Produkt Detaljer">
        <ItemTemplate >
       
            <b><%# DataBinder.Eval(Container.DataItem, "navn") %></b><br><br>
            <%# DataBinder.Eval(Container.DataItem, "beskrivelse") %><br><hr>
            Pris : <i><%# DataBinder.Eval(Container.DataItem, "pris") %></i> Dkr.<br>

        <br>
       
<asp:TextBox id="Name" runat="server" value='<%# DataBinder.Eval(Container.DataItem, "navn") %>' readonly="true"/> - <Input ID="antal" Type="Text" RunAt="Server" Size="3" Value="1">stk.
       
        <br>
        <asp:LinkButton id="folderliste" runat="server" OnCommand="AddToBasket">Put i kurv</asp:LinkButton>
       
        </ItemTemplate >
        </asp:TemplateColumn>
    </Columns>
Avatar billede burningice Nybegynder
15. juni 2003 - 12:18 #7
ah... jamen, så skal det være sådan her

Dim Navn as String = (CType(e.Item.FindControl("Name"), TextBox)).Text
Avatar billede burningice Nybegynder
15. juni 2003 - 12:21 #8
e skal nok lige være Args istedet... (hvorfor bruger du ikke standard-måden at navngive argumenterne på ? sender og e !)
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:25 #9
Public Sub AddToBasket(sender As Object, e As System.EventArgs) ?
giver fejl
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:30 #10
'Item' is not a member of 'System.EventArgs'.
Avatar billede burningice Nybegynder
15. juni 2003 - 12:31 #11
æææææh... hvad blev der nu af den her linje ?

Public Sub AddToBasket(Src As Object, Args As CommandEventArgs)
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:33 #12
troede jeg du skrev jeg skulle lave om ?
Avatar billede burningice Nybegynder
15. juni 2003 - 12:34 #13
okay... lad os tage den helt fra starten...

Du har et datagrid... til den har du en event, OnItemCommand, hvis jeg ikke gætter helt forkert ? i så fald, så skal dine argumenter se sådan her ud:

Sub AddToBasket(sender As Object, e As DataGridCommandEventArgs)
Avatar billede burningice Nybegynder
15. juni 2003 - 12:34 #14
ja.. du skal lave det om, så der stod

Public Sub AddToBasket(sender As Object, e As CommandEventArgs)
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:35 #15
+ det giver jo fejlen

Name 'e' is not declared.
Avatar billede burningice Nybegynder
15. juni 2003 - 12:39 #16
okay...lad os glemme de to sidste indlæg, og tage den forfra igen


Du har et datagrid... til den har du en event, OnItemCommand, hvis jeg ikke gætter helt forkert ? i så fald, så skal dine argumenter se sådan her ud:

Sub AddToBasket(sender As Object, e As DataGridCommandEventArgs)
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:49 #17
BC30408: Method 'Public Sub AddToBasket(sender As Object, e As System.Web.UI.WebControls.DataGridCommandEventArgs)' does not have the same signature as delegate 'Delegate Sub CommandEventHandler(sender As Object, e As System.Web.UI.WebControls.CommandEventArgs)'.
Avatar billede burningice Nybegynder
15. juni 2003 - 12:54 #18
drakwing>> prøv at hjælp mig lidt her, istedet for bare at sætte dig ned og fortvivle over de fejl du får !!

Hvilken event bruger du i dit datagrid?
Avatar billede drakwing Nybegynder
15. juni 2003 - 12:56 #19
ja undskyld (:

<asp:LinkButton id="folderliste" runat="server" OnCommand="AddToBasket">Put i kurv</asp:LinkButton>
Avatar billede burningice Nybegynder
15. juni 2003 - 13:04 #20
oh.. så du har ikke nogen event til dit datagrid?... det skal du, da eventen fra linkbutton vil blive sent videre (BubbleEvent) til det object, knappen er med i, i dette tilfælde dit datagrid.

så du skal have en

      <asp:DataGrid id="ItemsGrid"
          BorderColor="black"
          BorderWidth="1"
          CellPadding="3"
          OnItemCommand="ItemsGrid_Command" <--- den er vigtig
          AutoGenerateColumns="false"
          runat="server">

og så skal du fjerne OnCommand fra din linkbutton, og istedet bruge CommandName... f.eks. CommandName="AddToBasket"
Avatar billede drakwing Nybegynder
15. juni 2003 - 13:08 #21
øhh hvis jeg gør som du skriver der får jeg fejlen

'ItemsGrid_Command' is not a member of 'ASP.default_aspx'
Avatar billede drakwing Nybegynder
15. juni 2003 - 13:16 #22
undskyld hvis jeg er dum
Avatar billede burningice Nybegynder
15. juni 2003 - 16:11 #23
du skal sælvfølgelig huske at oprette en sub der hedder det samme som din OnItemCommand... :)
Avatar billede drakwing Nybegynder
15. juni 2003 - 16:34 #24
Mange tak for hjælpen det var det ! du har gjort det igen !
Jeg lærer det nok engang ;-)

Lav svar og få point //DW
Avatar billede burningice Nybegynder
15. juni 2003 - 16:47 #25
:) Det var godt du fik det til at virke
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