Avatar billede azcii Nybegynder
10. september 2007 - 10:41 Der er 9 kommentarer og
1 løsning

Indsæt i databasen

Jeg er lige gået fra PHP/MySQL til ASP.net/MSSQL og har derfor et begynder problem.

Når jeg forsøger at sætte data ind i min tabel i min MSSQL database så sætter den alle felterne til NULL undtaget mit id felt, den sætter altså en ny post ind, men den får bare ikke mine data rigtigt.

Sådan ser min kode ud:
<asp:SqlDataSource ID="CreatUser" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnection %>"
SelectCommand="SELECT username, password, email FROM users"
InsertCommand="INSERT INTO users (username, password, email) VALUES (@username,@password,@email)">
<InsertParameters>
<asp:FormParameter Name="username" formfield="reg_name" />
<asp:FormParameter Name="password" formfield="reg_pass" />
<asp:FormParameter Name="email" formfield="reg_mail" />
</InsertParameters>
</asp:SqlDataSource>

og længere nede har jeg noget textbokse som ser sådan her ud:
<asp:TextBox ID="reg_name" runat="server"></asp:TextBox>

og det hele står i en Citat:
<form id="form_register" runat="server">

Håber der er en som lige vil hjælpe mig igang her.
Avatar billede neoman Novice
10. september 2007 - 11:00 #1
Hvis du skal hente parameterværdier fra KONTROLLER så skal du vise det på denne måde, f.eks.:
            <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
Avatar billede neoman Novice
10. september 2007 - 11:06 #2
og eftersom det ser ud til at du er ny på E, så velkommen til.

Du kan læse lidt om hvordan det fungerer her: http://www.expfaq.dk/ - bemærk især "Behandling af svar":)
Avatar billede azcii Nybegynder
10. september 2007 - 12:55 #3
Tak for den varme velkomst.

Jeg har prøvet at sætte de ControlParametere ind, men den laver stadig fejl, muligvis fordi jeg sætter dem ind et forkert sted. Hvis jeg holder musen over dem skriver den: "Element 'ControlParameter' it not a known element. (Det er Visual Web Developer 2005 der siger det)
Avatar billede neoman Novice
10. september 2007 - 13:04 #4
Paste din aspx side ind her - ellers er det svært at gætte )
Avatar billede neoman Novice
10. september 2007 - 13:09 #5
Måden at undgå den slags problemer er at arbejde i designeren. Når du derinde klikker på din SqlDataSource, så har den en smarttag - den lille trekant. Når man klikker på den så åbner der sig en menu hvor du kan sige "configure datasource". Hvis du nu løber igennem den wizard, så kan du et sted angive at du har parametre og hvor de skal hentes henne. Leg lidt med det - så kan du se hvilken source kode den laver i hvert tilfælde.
Avatar billede azcii Nybegynder
10. september 2007 - 13:14 #6
<%@ Page MasterPageFile="index.master" %>

<script runat="server">
    Sub sendReg(ByVal sender As Object, ByVal e As System.EventArgs)
        CreatUser.Insert()
        labelReg.Text = "<p><strong>Brugeren er nu oprettet. Du vil modtage en email i løbet af få minutter.</strong></p>"
    End Sub
</script>


<asp:Content id="Main" ContentPlaceHolderId="chpMain" runat="server">



<center>
<form id="form_register" runat="server">

    <asp:Label id="labelReg" Runat="server" text="" />

    <asp:ValidationSummary id="validationSummary" ShowMessageBox="true" ShowSummary="false" HeaderText="Du mangler at udfylde:" EnableClientScript="true" runat="server"/>
       
    <asp:SqlDataSource id="CreatUser" runat="server"
      ConnectionString="<%$ ConnectionStrings:MyConnection %>"
      SelectCommand="SELECT username, password, email FROM users"
      InsertCommand="INSERT INTO users (username, password, email) VALUES (@username,@password,@email)">
        <SelectParameters>
        </SelectParameters>
        <InsertParameters>
            <asp:FormParameter Name="username" formfield="reg_name" />
            <asp:FormParameter Name="password" formfield="reg_pass" />
            <asp:FormParameter Name="email" formfield="reg_mail" />
        </InsertParameters>
    </asp:SqlDataSource>

    <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_pass" Name="password" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_mail" Name="email" PropertyName="Text" />
           
    <table>
        <tr>
            <td>
            <asp:RequiredFieldValidator id="validator_name" runat="server" ControlToValidate="reg_name" Display="Static" ErrorMessage="Brugernavn" text="*" />
                Brugernavn:
            </td>
            <td>
                <asp:TextBox id="reg_name" runat="server"></asp:TextBox>
            </td>   
        </tr>
        <tr>
            <td>
                <asp:RequiredFieldValidator id="validator_mail" runat="server" ControlToValidate="reg_mail" Display="Static" ErrorMessage="E-mail" Text="*" />
                E-mail:
            </td>
            <td>
                <asp:TextBox id="reg_mail" runat="server"></asp:TextBox>
            </td>
        </tr>   
        <tr>
            <td>
                <asp:RequiredFieldValidator id="validator_pass" runat="server" ControlToValidate="reg_pass" Display="Static" ErrorMessage="Kodeord" text="*" />
                Kodeord:
            </td>
            <td>
                <asp:TextBox id="reg_pass" TextMode="password" runat="server"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>
                <asp:RequiredFieldValidator id="validator_rules" runat="server" ControlToValidate="reg_rules" Display="Static" ErrorMessage="Regler" Text="*" />
                Regler:
            </td>
            <td>
                <asp:RadioButtonList id="reg_rules" runat="server">
                <asp:ListItem value="accept" text="Jeg accepterer<br /> alle spilleregler." />
                </asp:RadioButtonList>
            </td>
        </tr>   
        <tr>       
            <td colspan="2" align="right">
                <asp:Button id="reg_submit" runat="server" Text="Tilmeld" OnClick="sendReg" />
            </td>           
        </tr>   
    </table>
</form>
</center>

</asp:Content>
Avatar billede neoman Novice
10. september 2007 - 13:19 #7
<asp:SqlDataSource id="CreatUser" runat="server"
      ConnectionString="<%$ ConnectionStrings:MyConnection %>"
      SelectCommand="SELECT username, password, email FROM users"
      InsertCommand="INSERT INTO users (username, password, email) VALUES (@username,@password,@email)">
        <SelectParameters>
        </SelectParameters>
        <InsertParameters>
            <asp:FormParameter Name="username" formfield="reg_name" />
            <asp:FormParameter Name="password" formfield="reg_pass" />
            <asp:FormParameter Name="email" formfield="reg_mail" />
        </InsertParameters>
    </asp:SqlDataSource>

    <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_pass" Name="password" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_mail" Name="email" PropertyName="Text" />


skal være

    <asp:SqlDataSource id="CreatUser" runat="server"
      ConnectionString="<%$ ConnectionStrings:MyConnection %>"
      SelectCommand="SELECT username, password, email FROM users"      InsertCommand="INSERT INTO users (username, password, email) VALUES (@username,@password,@email)">
        <SelectParameters>
        </SelectParameters>
        <InsertParameters>
    <asp:ControlParameter ControlID="reg_name" Name="username" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_pass" Name="password" PropertyName="Text" />
    <asp:ControlParameter ControlID="reg_mail" Name="email" PropertyName="Text" />

        </InsertParameters>
    </asp:SqlDataSource>

da parametrene ellers ikke ved hvor de hører til.

Jeg bemærker at du ikke bruger code-behind. Det er en genial opfindelse som skiller din kode fra din præsentation. Du kan få lavet en code-behind fil når du laver en ny side i VWD og markerer at koden skal lægges i en separat fil.
Avatar billede neoman Novice
10. september 2007 - 13:24 #8
Tillige - hvis du er en PHP mand, er C# ikke mindre kryptisk for dig end VB? :=)
Avatar billede azcii Nybegynder
10. september 2007 - 13:43 #9
Mange tak, så virker det helt perfekt.

Jeg syntes C#, VB og ASP.net ligner hinanden til forveksling, men C# er nok det jeg havde nemmest ved, men også arbejdet mindst med.

Jeg er sikker på at når jeg først er kommet ordentligt igang med asp.net så vender jeg ikke tilbage til php selvom jeg ellers har været glad for php før.

Hvis du lige poster et svar så får du dine velfortjente points.
Avatar billede neoman Novice
10. september 2007 - 13:47 #10
Ok - god fornøjelse:) Du kan bruge VB eller C# i ASP.NET - de ting som ASP.NET tilbyder ved begge sprog er stort set ens.  MAn kan faktisk i samme projekt have både C# og VB ting ! :)
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