Avatar billede peterdamgaard Nybegynder
16. juli 2009 - 10:31 Der er 9 kommentarer

Tilføj ny html række med TextBox og DropDrownList

Hej eksperter

Jeg er næsten lige gået igang med ASP.NET (C#).
Jeg har en side hvor når brugen bla. trykker på en knap, så kommer der en række med en tekst, samt en TextBox og en DropDownList frem. Hvor DropDownListen så bliver fyldt ud med data fra en database. Hvis brugeren trykker på knappen igen skal der komme en ny række med de samme ting frem, lige under den forrige. Tilsidst bliver inputtet fra brugeren i disse controls sat ind i databasen, men det har jeg nogenlunde styr på - jeg kan bare ikke få lavet flere rækker. Jeg får bare lavet en ny række istedet for den forrige når jeg trykker på knappen vha. følgende kode:


C#-delen


protected void AddVoteButton_Click(object sender, EventArgs e)
        {                   
            Vote[] votes = new Vote[Convert.ToInt32(VotesAmountTextBox.Text)];
            VotesPLaceholder.Controls.Clear();
            VotesPLaceholder.Controls.Add(new LiteralControl("<table border=\"1\" width=\"100%\"> <tr> <th>Bedømmer</th> <th>Smag</th> <th>Konsistens</th> <th>Udseende</th> </tr>"));
            for (int i = 0; i < votes.Length; i++)
            {
                votes[i] = new Vote(voters);
                VotesPLaceholder.Controls.Add(new LiteralControl("<tr><td>"));
                VotesPLaceholder.Controls.Add(votes[i].user);
                VotesPLaceholder.Controls.Add(new LiteralControl("</td><td>"));
                VotesPLaceholder.Controls.Add(votes[i].taste);
                VotesPLaceholder.Controls.Add(new LiteralControl("</td><td>"));
                VotesPLaceholder.Controls.Add(votes[i].texture);
                VotesPLaceholder.Controls.Add(new LiteralControl("</td><td>"));
                VotesPLaceholder.Controls.Add(votes[i].appearance);
                VotesPLaceholder.Controls.Add(new LiteralControl("</tr></td>"));
               
            }
            VotesPLaceholder.Controls.Add(new LiteralControl("</table>"));
           
        }



og HTML-delen ser således ud:


<tr>
            <td class="style2">
   
        <asp:Button ID="AddVoteButton" runat="server" onclick="AddVoteButton_Click"
            Text="Tilføj bedømmelse" />
   
            </td>
            <td class="style1">
   
                <asp:TextBox ID="VotesAmountTextBox" runat="server" Height="20px"
                    ontextchanged="VotesAmountTextBox_TextChanged" Width="100px"></asp:TextBox>
   
            </td>
            <td>
   
                &nbsp;</td>
        </tr>
        <tr>
            <td colspan="3">
   
                <asp:PlaceHolder ID="VotesPLaceholder" runat="server"></asp:PlaceHolder>
   
            </td>
        </tr>



Jeg håber I kan hjælpe

På forhånd tak
Venlig hilsen Peter Damgaard
Avatar billede keysersoze Guru
16. juli 2009 - 10:41 #1
Jeg vil umiddelbart mene at du er nødt til at huske hvor mange rækker du allerede har tilføjet - og så tilføje de allerede eksisterende én gang til ved postback (og endelig med samme ID da det ellers går galt. Lav en viewstate-info, sæt default til 0 i din page_load og lav så en løkke for at tilføje data - her lidt pseudokode;

protected int NumberOfSomething
{
  get { return (int)ViewState["NumControls"]; }
  set { ViewState["NumControls"] = value; }
}

protected void AddVoteButton_Click(object sender, EventArgs e)
{
  NumberOfSomething++;

  for (int Something = 0; Something < this.NumberOfSomething; Something++)
  {
  // din kode
  }
}
Avatar billede stinejh1980 Nybegynder
16. juli 2009 - 10:42 #2
Jeg har godtnok arbejdet med ASP.NET i et stykke tid nu, men er først nu faldet over Ajax Toolkit.

Jeg syntes der er nogle fede features og måske kan denne video hjælpe dig med at opnå det du gerne vil - også selvom du er nybegynder.

http://www.asp.net/learn/ajax-videos/video-286.aspx
Avatar billede stinejh1980 Nybegynder
16. juli 2009 - 10:43 #3
Nedenunder videoen er der forresten et link, hvor du kan hente kildekoden i C#.
Avatar billede keysersoze Guru
16. juli 2009 - 10:55 #4
Det skal dog nok lige bemærkes, at det ikke er AJAX der gør magien her - det eneste AJAX gør i dette tilfælde er at få det til at virke lidt mere flydende end et helt synligt postback. Altså er AJAX kun med til at besværliggøre processen da der så er en ting mere at tage højde for end bare at tilføje kontroller.
Avatar billede stinejh1980 Nybegynder
16. juli 2009 - 11:08 #5
Jeg ved godt at det ikke kun er AJAX der gør magien, men her får han kildekoden givet, samt en video til at hjælpe med at komme i gang

Jeg tænkte bare at det var en god guide, for da jeg var nybegynder var det svært at forstår nogle af de svar jeg fik herinde.
Avatar billede keysersoze Guru
16. juli 2009 - 12:49 #6
det var ikke en kritik - men en oplysning så ikke spørger begyndte at tro noget forkert om AJAX.
Avatar billede stinejh1980 Nybegynder
16. juli 2009 - 12:56 #7
Bare ok :-) Det var min #5 heller ikke.

Nogle gange glemmer jeg bare lige at informere spørger om hvorfor jeg giver det svar jeg gør:-)

I dette tilfælde glemte jeg at sige at det var kommentaren:

"Jeg er næsten lige gået igang med ASP.NET (C#)"

der gjorde jeg sendte link istedet for at hjælpe med at skrive kodeeksempler :-)
Avatar billede peterdamgaard Nybegynder
16. juli 2009 - 21:19 #8
Mange tak elvstine, det var lige præcis det jeg skulle bruge, og det virker fint nu. Også rart med en video for en begynder. Lidt besværligt synes jeg nu bare, for sådan en enkel ting - men jeg er måske blevet for vandt til almindelige applikationer :P
Tak for hjælpen - hvis du lægger et svar skal du få pointne
Avatar billede stinejh1980 Nybegynder
17. juli 2009 - 07:54 #9
Glad for at jeg kunne hjælpe :-)
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
Kurser inden for grundlæggende programmering

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