Avatar billede stanz2002 Nybegynder
18. juli 2006 - 13:10 Der er 24 kommentarer og
1 løsning

Identifier expected ?

Hej,

Jeg har følgende kode i asp.net..

----------------------------
sub dg_Update(s As Object, e As DataGridCommandEventArgs)       
dim intLinkID        As Integer        = dgLinks.DataKeys(e.Item.ItemIndex)
dim strLinkText        As String        = CType(e.Item.Cells.(1).Controls(0), TextBox).Text

strCmd = "UPDATE Links SET Links_Text=@LinkText WHERE Links_ID=@LinkID"

objCmd = New OdbcCommand(strCmd, objConn)

objCmd.Parameters.Add("@LinkID", intLinkID)
objCmd.Parameters.Add("@LinkText", strLinkText)

objConn.Open()
objCmd.ExecuteNonQuery()
objConn.Close()

dgLinks.EditItemIndex = -1
dgLinks.DataBind

end sub
----------------------------

Den giver dog denne fejl i linie med 'dim strLinkText ...':

Compiler Error Message: BC30203: Identifier expected.

Hvad kan det være.. ps: jeg er helt ny i asp.net.. :)

/ Kenneth
Avatar billede snepnet Nybegynder
18. juli 2006 - 13:13 #1
Du har et punktum for meget her:
CType(e.Item.Cells.(1).Controls(0), TextBox).Text
Prøv sådan her:
CType(e.Item.Cells(1).Controls(0), TextBox).Text
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 10:39 #2
hej.. takker.. det hjalp :)

men nu har jeg bare et andet problem.. når jeg vil opdatere databasen, så bliver ændringerne bare ikke lagret i DB'en.

Koden ser sådan her ud nu:

---------------------------

sub dg_Update(s As Object, e As DataGridCommandEventArgs)           

dim intLinkID As Integer = dgLinks.DataKeys(e.Item.ItemIndex)
dim strLinkText As String = CType(e.Item.Cells(1).Controls(0), TextBox).Text
           
dim strCmd As String = "UPDATE Links SET Links_Text=@LinkText WHERE Links_ID=@LinkID"

Dim strConn As String = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxxx; uid=xxxxxx; pwd=xxxxxxx; option=3"

Dim objConn As OdbcConnection = New OdbcConnection(strConn)

dim objCmd As OdbcCommand = New OdbcCommand(strCmd, objConn)

objCmd.Parameters.Add("@LinkID", intLinkID)
objCmd.Parameters.Add("@LinkText", strLinkText)

objConn.Open()
objCmd.ExecuteNonQuery()
objConn.Close()

dgLinks.EditItemIndex = -1
dgLinks.DataBind

end sub

-------------------------------

Hvad kan det skyldes..

PS: smid et svar så du kan få lidt point..
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 10:43 #3
den kommer ikke med nogen fejl.. opdateringen sker bare ikke.. DB'en indeholder de gamle data efter jeg hR trykket på 'update'..
Avatar billede snepnet Nybegynder
20. juli 2006 - 10:52 #4
Ja - nogle gange skal der ikke så meget til :o)

Du behøver ikke bruge ODBC hvis du vil snakke med MySql - Du kan f.eks. benytte MySqlConnector (gratis). Du kan finde den her:
http://dev.mysql.com/downloads/connector/net/1.0.html

Men mht. din kode - så angiver du faktisk ikke værdier på dine parametre.
Prøv sådan her:

objCmd.Parameters.AddWithValue("@LinkID", intLinkID)
objCmd.Parameters.AddWithValue("@LinkText", strLinkText)

Ovenstående går kun godt, hvis du bruger version 2.0 - hvis det ikke er tilfældet må du lige sige til.

Mvh
Avatar billede snepnet Nybegynder
20. juli 2006 - 10:52 #5
Hov - det skulle så have været et svar :o)
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 11:06 #6
Omkring ODBC, så er det den eneste jeg lige kunne få til at fungere.. det er osse bare til et lille internt site i vores virksomhed.. Siden hostes ude i byen og kunne ikke få MySqlConnetor til at virke :) er osse ret ny i asp.net..

Men jeg bruger version 1.1...

ps.. tak for et hurtigt svar :)

/ Kenneth
Avatar billede snepnet Nybegynder
20. juli 2006 - 11:47 #7
ok - addwithvalue er en 2.0 ting. Så du må kan f.eks. gøre det sådan her:
objCmd.Parameters.Add("@LinkText", OdbcType.NVarChar)
objCmd.Parameters("@LinkText").Value = ...
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 12:01 #8
Jeg har sat det her ind, men det giver samme resultat :)

objCmd.Parameters.Add("@LinkID", OdbcType.NVarChar)
objCmd.Parameters("@LinkID").Value = intLinkID

objCmd.Parameters.Add("@LinkText", OdbcType.NVarChar)
objCmd.Parameters("@LinkText").Value = strLinkText

/ Kenneth
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 12:01 #9
altså ingen opdatering i DB'en.. øv..
Avatar billede snepnet Nybegynder
20. juli 2006 - 12:23 #10
Hvordan ser det ud når du debugger ned igennem?
Og hey ... nu er det ikke sådan at du f.eks. databinder dit grid ved hvert request vel?
Mvh
Avatar billede snepnet Nybegynder
20. juli 2006 - 12:24 #11
Det kan tænkes at du godt nok får lavet en opdatering, men med de værdier der stod i forvejen - men det kan du så på værdierne når du debugger.
Kan du ikke lige smide den kode du bruger til at databinde med (i page_load eller hvor du nu har det).
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 12:40 #12
hej igen..

Min datebase forbindelse:

---------------------------

sub Page_Load(s As object, e As EventArgs)

Dim strConn    As String = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxxx; uid=xxxxxx; pwd=xxxxx; option=3"

Dim objConn    As OdbcConnection = New OdbcConnection(strConn)
       
Dim sqlText    As String    = "select * from links"

Dim cmdConn    As OdbcCommand    = New OdbcCommand(sqlText, objConn)

objConn.Open()

' Dim dgLinks    As New DataGrid '

Dim objDA    As OdbcDataAdapter

Dim objDS    As New DataSet()

objDA        = New OdbcDataAdapter(sqlText, objConn)

objDA.Fill    (objDS, "Links")

dgLinks.DataSource = objDS

dgLinks.DataBind()

objConn.Close()

end sub

---------------------------
Avatar billede snepnet Nybegynder
20. juli 2006 - 12:44 #13
Ah ja ... Du må pakke det ind i en
if not IsPostBack then
'din kode
end if
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 12:52 #14
hvis jeg sætter den 'is not postback..' rundt om min 'sub Page Load' med forbindelsen til db'en, så ser siden fint ud, men idet jeg trykker på 'Edit' så forsvinder hele datagridet :)..
Avatar billede snepnet Nybegynder
20. juli 2006 - 13:35 #15
Har du slået viewstate fra?
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 13:38 #16
hvordan gør jeg det :)
Avatar billede snepnet Nybegynder
20. juli 2006 - 13:57 #17
Du kan gøre det i dit pagedirective (øverst i aspx-filen)
Der kan du sætte ViewState="true/false".
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 14:02 #18
så får jeg den her:

Parser Error Message: The 'ViewState' attribute is not supported by the 'page' directive.

med den her kode:

<%@ Page Language="VB" debug="true" ViewState="false" ContentType="text/html" ResponseEncoding="iso-8859-1" %>
Avatar billede snepnet Nybegynder
20. juli 2006 - 14:13 #19
Ja undskyld... Det er mig der sidder og tåge:
EnableViewState="true"
Den er default true, så du skal egentlig bare sikre dig at den ikke står der.
Check også din web.config (hvis du har sådan en)
Mvh
Avatar billede snepnet Nybegynder
20. juli 2006 - 14:13 #20
Må jeg se din aspx-kode?
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 14:26 #21
hehe.. jah det er svært at koncentrere sig i den her varme :)..

Men her er hele siden :)

----------------------------

<%@ Page Language="VB" debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1" %>

<%@ import Namespace = "System.Data" %>
<%@ Import Namespace = "System.Data.Odbc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Mindpeople Link Collection</title>
<link href="/links/stylesheet.css" rel="stylesheet" type="text/css" media="screen" />


        <script runat="server" language="vb">

            ' Retrieve data for page '
            sub Page_Load(s As object, e As EventArgs)

                if not IsPostBack then

                    Dim strConn            As String                = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxx; uid=xxxxx; pwd=xxxxx; option=3"
                   
                    Dim objConn            As OdbcConnection        = New OdbcConnection(strConn)
                                               
                    objConn.Open()


                        ' Get Links data '
                        Dim ddlCategory            As String
                       
                        if Request.QueryString("category") > "" then
                       
                            ddlCategory            = Request.QueryString("category")
                           
                        else
                       
                            ddlCategory         = "cat01"
           
                        end if                       
                       
                       
                        Dim sqlTextLinks        As String                = "SELECT * FROM links WHERE links_Category='" & ddlCategory & "' ORDER BY links_Title"

                        Dim objDALinks            As OdbcDataAdapter        = New OdbcDataAdapter(sqlTextLinks, objConn)
                       
                        Dim objDSLinks            As New DataSet()

                       
                        objDALinks.Fill    (objDSLinks, "Links")
                       
                        dgLinks.DataSource = objDSLinks
                       
                        dgLinks.DataBind()


                objConn.Close()
       
                end if

                end sub


            ' Edit database entries '
            sub dg_Edit(s As Object, e As DataGridCommandEventArgs)
           
                dgLinks.EditItemIndex        = e.Item.ItemIndex
                dgLinks.DataBind

                end sub


            sub dg_Cancel(s As Object, e As DataGridCommandEventArgs)

                dgLinks.EditItemIndex        = -1
                dgLinks.DataBind()
           
                end sub           


            sub dg_Update(s As Object, e As DataGridCommandEventArgs)           

                Dim intLinkID        As Integer                = dgLinks.DataKeys(e.Item.ItemIndex)
                Dim strLinkText        As String                = CType(e.Item.Cells(1).Controls(0), TextBox).Text
                               
                Dim strCmd            As String                = "UPDATE links SET links_Text=@LinkText WHERE links_ID=@LinkID"

                Dim strConn            As String                = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxx; uid=xxxxx; pwd=xxxxx; option=3"
               
                Dim objConn            As OdbcConnection        = New OdbcConnection(strConn)
               
                Dim objCmd            As OdbcCommand            = New OdbcCommand(strCmd, objConn)

                    objCmd.Parameters.Add("@LinkID", OdbcType.NVarChar)
                    objCmd.Parameters("@LinkID").Value = intLinkID

                    objCmd.Parameters.Add("@LinkText", OdbcType.NVarChar)
                    objCmd.Parameters("@LinkText").Value = strLinkText
                   
                    ' objCmd.Parameters.Add("@LinkID", intLinkID) '
                    ' objCmd.Parameters.Add("@LinkText", strLinkText) '
                   
                    objConn.Open()
                    objCmd.ExecuteNonQuery()
                    objConn.Close()
                   
                    dgLinks.EditItemIndex = -1
                    dgLinks.DataBind
               
                end sub


            ' Redirect Page '
            sub subRedirPage(s As Object, e As EventArgs)
       
                Dim strCategory As String = "?category=" & Server.UrlEncode(selectCategory.SelectedItem.Value)
               
                Response.Redirect("http://www.mindpeople.dk/links/index.aspx" & strCategory)
       
                end sub
       
        </script>


</head>

<body>

    <!-- Topsite -->
            <!--#include virtual="/links/includes/topsite.aspx" -->


    <!-- Content -->
            <form runat="server">

            <table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
              <tr>

                <td width="600" align="right" valign="bottom">

                        <asp:Dropdownlist id="selectCategory" CssClass="selectbox" AutoPostBack="true" runat="server">
                                           
                            <asp:ListItem Text="Inspiration" Value="cat01" />
                            <asp:ListItem Text="Stock Photos" Value="cat02" />
                            <asp:ListItem Text="Tutorials" Value="cat03" />               
                                               
                            </asp:Dropdownlist>

                        <asp:Button id="btnGoToPage" Text=" Go! " CssClass="selectbox" OnClick="subRedirPage" runat="server" />

                </td>
               
              </tr>
            </table>


            <table width="600" height="10" border="0" cellspacing="0" cellpadding="0" align="center">
              <tr>
                <td>&nbsp;</td>
              </tr>
            </table>


            <table width="600" border="0" cellspacing="0" cellpadding="0" align="center">
              <tr>

                <td width="600" align="left" valign="top">

                        <p>
                        <asp:DataGrid
                            ID="dgLinks"
                            runat="server"
                            AutoGenerateColumns="false"
                            CellSpacing="2"
                            CellPadding="5"
                            BorderWidth="0"
                            DataKeyField="links_ID"
                            OnEditCommand="dg_Edit"
                            OnCancelCommand="dg_Cancel"
                            OnUpdateCommand="dg_Update">
                       
                            <headerstyle Font-Name="Verdana" Font-Size="10px" ForeColor="#FFFFFF" BackColor="#9B0000" Font-Bold="true" />
                            <itemstyle Font-Name="Verdana" Font-Size="10px" ForeColor="#333333" BackColor="#DDDDDD" />
                            <alternatingitemstyle Font-Name="Verdana" Font-Size="10px" ForeColor="#333333" BackColor="#BFBFBF" />
                       
                        <columns>
                       
                            <asp:HyperLinkColumn
                                DataTextField="links_Title"
                                DataNavigateUrlField="links_link"
                                DataNavigateUrlFormatString="http://{0}"
                                DataTextFormatString="<span class='bodytext_link_red'>{0}</span>"
                                Target="_blank"
                                HeaderText="Site">
                                    <headerstyle Width="150px" />                       
                                    </asp:HyperLinkColumn>
                                                       
                            <asp:BoundColumn
                                DataField="links_Text"
                                HeaderText="Description">
                                    <headerstyle Width="350px" />
                                    </asp:BoundColumn>
                           
                            <asp:EditCommandColumn
                                EditText="Edit"
                                CancelText="Cancel"
                                UpdateText="Update">
                                    <headerstyle Width="100px" />
                                    </asp:EditCommandColumn>
                           
                        </columns>
                       
                        </asp:DataGrid>
                        </p>

                </td>
               
              </tr>
            </table>

            </form>


</body>

</html>
Avatar billede snepnet Nybegynder
20. juli 2006 - 14:41 #22
Lav en sub hvor du udfører databindingen, som henter data og udfører selve databinding, og kald så den metode der hvor du pt. kalder dgLinks.DataBind() - så skal det nok fungere.
Mvh
Avatar billede stanz2002 Nybegynder
20. juli 2006 - 15:07 #23
hmm.. nu har jeg den her kode og det virker stadig ikk :) Samme problem som før..

-------------------------

        <script runat="server" language="vb">

            ' BindDataLinks '
            sub BindDataLinks()

                Dim ddlCategory            As String
               
                if Request.QueryString("category") > "" then
               
                    ddlCategory            = Request.QueryString("category")
                   
                else
               
                    ddlCategory         = "cat01"
   
                end if                       
               

                Dim strConn                As String                = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxx; uid=xxxx; pwd=xxxxx; option=3"
               
                Dim objConn                As OdbcConnection        = New OdbcConnection(strConn)
                                           
                objConn.Open()
               
               
                Dim sqlTextLinks        As String                = "SELECT * FROM links WHERE links_Category='" & ddlCategory & "' ORDER BY links_Title"

                Dim objDALinks            As OdbcDataAdapter        = New OdbcDataAdapter(sqlTextLinks, objConn)
               
                Dim objDSLinks            As New DataSet()

               
                objDALinks.Fill    (objDSLinks, "Links")
               
                dgLinks.DataSource = objDSLinks
               
                dgLinks.DataBind()           

                end sub


            ' BindDataCategory '
            sub BindDataCategory()

                Dim strConn                As String                = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxx; uid=xxxx; pwd=xxxxx; option=3"
               
                Dim objConn                As OdbcConnection        = New OdbcConnection(strConn)
                                           
                objConn.Open()


                Dim sqlTextCategory        As String                = "SELECT * FROM category ORDER BY category_Text"

                Dim objDACategory        As OdbcDataAdapter        = New OdbcDataAdapter(sqlTextCategory, objConn)
               
                Dim objDSCategory        As New DataSet()


                objDACategory.Fill    (objDSCategory, "Links")
               
                dgCategory.DataSource = objDSCategory
               
                dgCategory.DataBind()

                objConn.Close()

                end sub

            ' Retrieve data for page '
            sub Page_Load(s As object, e As EventArgs)

                if not IsPostBack then

                        ' Get Links data '
                            BindDataLinks()


                        ' Get Category data '
                            BindDataCategory()
       
                end if

                end sub


            ' Edit database entries '
            sub dg_Edit(s As Object, e As DataGridCommandEventArgs)
           
                dgLinks.EditItemIndex        = e.Item.ItemIndex
                dgLinks.DataBind

                end sub


            sub dg_Cancel(s As Object, e As DataGridCommandEventArgs)

                dgLinks.EditItemIndex        = -1
                dgLinks.DataBind()
           
                end sub           


            sub dg_Update(s As Object, e As DataGridCommandEventArgs)           

                Dim intLinkID        As Integer                = dgLinks.DataKeys(e.Item.ItemIndex)
                Dim strLinkText        As String                = CType(e.Item.Cells(1).Controls(0), TextBox).Text
                               
                Dim strCmd            As String                = "UPDATE links SET links_Text=@LinkText WHERE links_ID=@LinkID"

                Dim strConn            As String                = "Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=xxxxx; uid=xxxx; pwd=xxxxx; option=3"
               
                Dim objConn            As OdbcConnection        = New OdbcConnection(strConn)
               
                Dim objCmd            As OdbcCommand            = New OdbcCommand(strCmd, objConn)

                    objCmd.Parameters.Add("@LinkID", OdbcType.NVarChar)
                    objCmd.Parameters("@LinkID").Value = intLinkID

                    objCmd.Parameters.Add("@LinkText", OdbcType.NVarChar)
                    objCmd.Parameters("@LinkText").Value = strLinkText
                   
                    ' objCmd.Parameters.Add("@LinkID", intLinkID) '
                    ' objCmd.Parameters.Add("@LinkText", strLinkText) '
                   
                    objConn.Open()
                    objCmd.ExecuteNonQuery()
                    objConn.Close()
                   
                    dgLinks.EditItemIndex = -1
                    dgLinks.DataBind
               
                end sub


            ' Redirect Page '
            sub subRedirPage(s As Object, e As EventArgs)
       
                Dim strCategory As String = "?category=" & Server.UrlEncode(dgCategory.SelectedItem.Value)
               
                Response.Redirect("http://www.mindpeople.dk/links/index.aspx" & strCategory)
       
                end sub
       
        </script>
Avatar billede snepnet Nybegynder
20. juli 2006 - 16:12 #24
Du har heller ikke skiftet de her
dgLinks.DataBind()
ud med kald til din databindingsmetode
Mvh
Avatar billede stanz2002 Nybegynder
24. juli 2006 - 11:15 #25
Jeg synes ikke helt jeg kan få det til at virke.. Tror bare jeg dropper det..

Men tak for hjælpen alligevel..

/ Kenneth
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