Avatar billede testing Nybegynder
24. oktober 2006 - 14:28 Der er 30 kommentarer og
1 løsning

Datalist med textbox

Hej

Jeg har en datalist, som jeg har sat en textbox og en knap ind i.

Hvordan kan jeg tilgå teksten i textboxen?

Sprog c#
Avatar billede snepnet Nybegynder
24. oktober 2006 - 14:31 #1
Hvis du f.eks. har givet tekstboksen id'et txtInput, kan du hente den via det aktuelle item:
TextBox tb = someItem.FindControl("txtInput") as TextBox;
string tekst = tb.Text;
Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 14:59 #2
Tak for svaret, men jeg får følgende fejl:
Objektreferencen er ikke indstillet til en forekomst af et objekt.

kode:

        TextBox tb = DataList1.FindControl("txtinput") as TextBox;
        string text = tb.Text;
Avatar billede snepnet Nybegynder
24. oktober 2006 - 16:15 #3
Du kan ikke finde den direkte på din DataList - du bliver nødt til at have fat i det respektive item.

Abbonnerer du f.eks. på eventet ItemCommand (og har noget der kan fyre en sådan af) - kan du lave sådan noget her:

protected void someDataList_ItemCommand(object source, DataListCommandEventArgs e)
{
  TextBox tb = e.Item.FindControl("txtInput") as TextBox;
  string tekst = tb.Text;
}

Hvis du vil kigge alle rækkerne igennem - kan du gøre sådan her:
foreach(DataListItem item in someDataList.Items)
{
  TextBox tb = e.Item.FindControl("txtInput") as TextBox;
  if(tb != null)
  {
    string tekst = tb.Text;
  }
}

Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 17:05 #4
Tak for hjælpen.

Lige et spørgsmål til... :-)

hvordan får jeg så knappen jeg har i datalisten til at sende tb.text?
Avatar billede snepnet Nybegynder
24. oktober 2006 - 19:16 #5
Sorry - den er jeg ikke helt med på ... Teksten står i tekstboksen, som du får fat i med ovenstående kode - så hvad mener du med at sende teksten med knappen?
Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 19:26 #6
det er til at tilføje et antal til en liste..
Så man skriver antal i textboxen og så klikker man på næste...
Avatar billede snepnet Nybegynder
24. oktober 2006 - 20:14 #7
Men så står antallet jo i tekstboksen - er stadig ikke med på hvad du mener med at knappen skal sende den ... sorry
Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 20:49 #8
Det er til en indkøbs funktion, hvor brugeren skriver et antal i textboxen. og klikker på køb...
Avatar billede snepnet Nybegynder
24. oktober 2006 - 21:31 #9
Jeg beklager - men jeg forstår stadig ikke dit spørgsmål ... Du må give mig lidt mere at gå efter.
Du har en værdi til rådighed på en kontrol (din tekstboks), og som jeg forstår dit spørgsmål - vil du også have værdien til rådighed på din knap.
Hvis du abbonnerer på det event der hedder ItemCommand på din dataliste (som i eksemplet) - har du adgang til værdien, og kan overføre den værdi til din indkøbskurv.
Har du flere knapper på hvert item - kan du give hver især et CommandName og evt. et CommandArgument - så du kan kende dem fra hinanden i koden (selvom du kun har én handler).
Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 21:45 #10
Altså... jeg har en dataliste, hvori der bliver hentet bla vareId fra en database...
og jeg har en knap (køb)og en textbox (antal)... når en kunde så skriver 4 i textboxen og klikker på køb, skal "4", sættes over i min liste... og med den kode jeg har lavet efter det du har skrevet tager den "0" med over... jeg har lavet en test på om det er det rigtige der sker i koden ved at sige:

protected void someDataList_ItemCommand(object source, DataListCommandEventArgs e)
{
  TextBox tb = e.Item.FindControl("txtInput") as TextBox;
  string tekst = tb.Text;
  label1.text = tekst;
}

herefter har jeg conventeret string til int, som er en global variabel.

protected void someDataList_ItemCommand(object source, DataListCommandEventArgs e)
{
  TextBox tb = e.Item.FindControl("txtInput") as TextBox;
  string tekst = tb.Text;
  label1.text = tekst;
  antal = Convert.ToInt32(tekst);
}

men den sender "0" ved klik på knappen.
Avatar billede snepnet Nybegynder
24. oktober 2006 - 22:51 #11
Så der står altså også 0 i din label eller?
Avatar billede testing Nybegynder
24. oktober 2006 - 23:05 #12
nej, i min label står der f.eks 4 hvis jeg taster 4 ind i textboxen, men i min liste står der ingenting.
Avatar billede snepnet Nybegynder
24. oktober 2006 - 23:14 #13
... Den piller du jo heller ikke ved i den kode.
Du får bare værdien ud af tekstboksen - intet andet end din label bliver berørt i den kode du har.
Mvh
Avatar billede snepnet Nybegynder
24. oktober 2006 - 23:14 #14
Hvis du databinder din liste mod et eller andet, er det jo det et eller andet du skal sætte værdien ind i.
Mvh
Avatar billede testing Nybegynder
24. oktober 2006 - 23:40 #15
Du får lige hele koden:

int quantity;

protected void DataList1_ItemCommand1(object source, DataListCommandEventArgs e)
    {
        TextBox tb = e.Item.FindControl("txtinput") as TextBox;
            if (tb != null)
            {
                string test = tb.Text;
                quantity = Convert.ToInt32(test);
                string c = Convert.ToString(quantity);
                Label1.Text = c;
               
            }
    }
protected void Button1_Command1(object sender, CommandEventArgs e)
    {
        DataView dv = (DataView)SqlDataSource1.Select DataSourceSelectArguments.Empty);

        DataRowView dr = dv[0];
        string ID = e.CommandArgument.ToString();
        string Name = e.CommandName.ToString();
        decimal Price;
     
        if (dr["ProductSalesPrice"] is DBNull)
            Price = (decimal)dr["ProductSalesPrice"];
        else
            Price = (decimal)dr["ProductSalesPrice"];


        ShoppingCart cart;
        if (Session["cart"] == null)
        {
            cart = new ShoppingCart();
            Session["cart"] = cart;
        }
        else
        {
            cart = (ShoppingCart)Session["cart"];
        }
        cart.AddItem(ID, Name, quantity, Price);

    }

og det er så i cart.addItem at quantity bliver "0" og ikke f.eks "4".
Avatar billede snepnet Nybegynder
25. oktober 2006 - 08:20 #16
Din kode forudsætter også at DataList1_ItemCommand køres før Button1_Command1 - det er næppe tilfældet.
Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 09:13 #17
Og det kan man ikke få den til?
Avatar billede snepnet Nybegynder
25. oktober 2006 - 11:06 #18
Den slags kører i en fastlagt sekvens, men du kan jo gøre som jeg skrev her:
24/10-2006 21:31:44
Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 12:50 #19
Hvordan sætter jeg CommandArgument = textbox?
Avatar billede snepnet Nybegynder
25. oktober 2006 - 13:06 #20
Du sætter f.eks. CommandName="AddToBasket" på knappen - så kan du lave sådan noget her i koden:

protected void DataList1_ItemCommand1(object source, DataListCommandEventArgs)
{
  // switch på CommandName
  // i hver case - kald en metode der udfører arbejdet, og send de nødvendige argumenter til den.
}

// f.eks.
private void AddToBasket(int productId, int numberOfItems)
{
}

Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 14:12 #21
Jeg er godt nok ked af det... Men det fatter jeg slet ikke!

jeg kan da ikke switch(Addtobasket)!
Avatar billede snepnet Nybegynder
25. oktober 2006 - 14:39 #22
Nej men du kan switche over dit commandname, og køre den nødvendige kode iht. kommandoen.
Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 15:05 #23
Kan du komme med et eksempel? :)
Avatar billede snepnet Nybegynder
25. oktober 2006 - 18:16 #24
switch(e.CommandName)
{
  case "AddToBasket":
    // koden til at trække de værdier du skal bruge - f.eks. antallet
    AddToBasket(id, antal);
    break;
}

private void AddToBasket(int productId, int numberOfItems)
{
  // hvad der nu skal ske her
}

Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 19:52 #25
og vi siger mange tak for hjælpen :) :) :) :) :)
Avatar billede snepnet Nybegynder
25. oktober 2006 - 21:31 #26
Var så lidt ... fik du det til at funge?
Mvh
Avatar billede testing Nybegynder
25. oktober 2006 - 21:36 #27
Ja..

Men hehe... nu sidder jeg med et nyt problem..
Jeg har et gridview hvor jeg henter noget data ud, bla customerID, kan jeg så ikke få et andet gridview til at hente customerID fra den?
Avatar billede snepnet Nybegynder
26. oktober 2006 - 19:57 #28
det må du nok uddybe ... vil du have et gridview til at hente en værdi fra et andet gridview?
(hvad er scenariet?)
Mvh
Avatar billede testing Nybegynder
03. november 2006 - 23:27 #29
lukket
Avatar billede testing Nybegynder
03. november 2006 - 23:28 #30
hvordan får du dine point?
Avatar billede snepnet Nybegynder
04. november 2006 - 13:02 #31
Jeg lægger et svar :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