Iterace prvků z formuláře   otázka

ASP.NET WebForms

Zdravím.

Tak jsem po roce co jsem přešel z php přišel na to, že nedokážu, nebo nevím jak správně, udělat následující triviální věc. Zvyky z php jsou pod kůží hluboce zaryté a nerad bych vymýšlel blbosti.

Načítám položky z databáze do repeateru a používám wizard step. U každé položky mám id a název. Potřebuji vyplnit nějaká kritéria (např množsví) do textboxu no a pak je potřebuji poslat dál a zpracovat (zobrazit přehled co kdo vyplnil u jednotlivých položek)

Ha a nevím.. :-( Jak iterovat ty položky ke zpracování tak, abych ty údaje měl spárované s jedinečným id každé té položky a v posledním kroku je mohl uložit do datábáze?

Omlouvám se za asi primitivnost, jdu pátrat na googlu, ale kdyby měl někdo odkaz na nějaký tutoriál, nebo krátce popsal správné řešení v asp.net budu velmi rád.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem to zlomil, ale obávám se, že právě tím phpkovým způsobem. Určitě to jde nějak lépe. Id pole jsem si dal do neviditelného labelu v repeateru. (ještě musim ošetřit vstup pouze na čísla, tak ten kód berte s rezervou, jde mi o princip)

    Protected Sub InsertMaterial(ByVal idOrd As Integer)

        Dim quanttext As String
        Dim quantBox As TextBox
        Dim idBox As Label
        Dim idMat As String
        Dim i As Integer


        For Each RepeaterItem In Repeater1.Items   

            quantBox = Repeater1.Items(i).FindControl("TextQuant")
            idBox = Repeater1.Items(i).FindControl("LabelId")
            quanttext = quantBox.Text
            idMat = idBox.Text

            If Trim(quanttext) <> "" Then
                Call InsertMat(idOrd, CInt(quanttext), idMat)'to už odesílám proceduře k zápisu do db'
            End If

            i += 1


        Next


    End Sub
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já myslím, že je to v pohodě, akorát pár poznámek:

- Call vynechte, je to přežitek ze starých verzí systému.

- porovnávání na prázdnost řetězce dělejte pomocí String.IsNullOrEmpty, případně If řetězec.Trim <> String.Empty; staré funkci Trim(řetězec) se vyhněte

- motáte dohromady ForEach a klasický cyklus - když už máte For Each a iterujete přes jednotlivé RepeaterItem v Repeateru, můžete k nim přistupovat přes iterační proměnnou RepeaterItem a nemusíte hrabat na indexy. Místo Repeater1.Items(i) tedy pište RepeaterItem (a přejmenujte to RepeaterItem na něco jiného, tohle se myslím mlátí s nějakým názvem třídy v .NETu, dejte třeba jenom item).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky moc. Tohle jsou přesně rady, které moc ocením. Upravil jsem to přesně jak píšete.

Ještě jednou díky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback