NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Maros2470
Člen
Avatar
Maros2470:15.9.2014 12:09

Zdravím. Potřeboval bych poradit jak naformátovat vzhled zobrazovaných dat (pokud to lze). Například datum se zobrazuje i s časem a potřebuji jen datum.

U statusu bych potřeboval měnit barvu textu v závislosti na znění textu, např.: Vyhovuje - zelená, Nevyhovuje - červená.

U data v závislosti na datu. Je li zobrazené datum vyšší než systémové datum - červená, jeli menší - zelená.

K zobrazení dat používám FormView. Jednotlivé položky mám napsány takto:

<span style="color: yellow; font-size:medium; text-align:left">Datum registrace:</span>
            <span style="color: whitesmoke; font-size:large; text-align:right"<asp:Label ID="TakenIntoEvidenceLabel" runat="server" Text='<%# Bind("TakenIntoEvidence") %>' /></span>

Díky za cenné rady

Editováno 15.9.2014 12:10
 
Odpovědět
15.9.2014 12:09
Avatar
Michal Štěpánek:15.9.2014 12:26

Barvu statusu bych řešil pomocí css uděláš si tam třídu vyhovuje a dáš jí vlastnosti. Pak jen ve stránce dáš formát pomocí

class="proměnná_status"

Datum se formátuje např. takto:

<asp:Label ID="JizdaDatumLabel" runat="server" Font-Bold="true" Text='<%# Bind("JizdaDatum", "{0:D}") %>' />

se zobrazí dlouhé datum. Když dáš malé "d" místo velkého, zobrazí se datum krátké. Při použití "t" se zobrazí čas...
A barvu datumu bych řešil v kódu, pomocí "If" a "Else"

Editováno 15.9.2014 12:29
Nahoru Odpovědět
15.9.2014 12:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 12:34

Mrkni se na videotutoriály na http://mstv.cz , vyber si "vývojáři", kategorii zvol "asp.net", tam se dozvíš spoustu těchto základních věcí pro tvorbu webů v ASP.NET...

Nahoru Odpovědět
15.9.2014 12:34
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 15:56

Barvu bych taky řešil v kódu a to jak u data, tak i u statusu, ale nevím jak si vytáhnout jednotlivé hodnoty z FormView. Ony tam jsou sice ID Labelů, ale v kódu tyto Labely nejsou vidět. Takže jsem na mrtvém bodě. Aplikaci mám téměř hotovou, teď už jen to formátování Labelů.

 
Nahoru Odpovědět
15.9.2014 15:56
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 17:02

Pomohlo by mi také dostat data do Labelu, tam už bych si s tím poradil, ale data mi nejdou navázat na Label.

 
Nahoru Odpovědět
15.9.2014 17:02
Avatar
Michal Štěpánek:15.9.2014 18:31

Data do Labelů se "Bindují"

<asp:Label ID="TakenIntoEvidenceLabel" runat="server" Text='<%# Bind("TakenIntoEvidence") %>' />

a v kódu se dostaneš např na Label, který má ID="TakenInto­EvidenceLabel" ve FormView1, tak, že ho prohledáš

(FormView1.FindControl("TakenIntoEvidenceLabel") As Label).Text
Nahoru Odpovědět
15.9.2014 18:31
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 19:01

Asi už dneska blbnu. Můžeš mi ten předchozí kód napsat jako podmínku: Když text = něco tak ForeColor = green.

Díky moc. Už mi to nemyslí a chtěl bych tuto část dodělat. Od zítřka makám a nebudu mít na to čas.

 
Nahoru Odpovědět
15.9.2014 19:01
Avatar
Michal Štěpánek:15.9.2014 19:51
If ((FormView1.FindControl("TakenIntoEvidenceLabel") As Label).Text = "něco")
{
(FormView1.FindControl("TakenIntoEvidenceLabel") As Label).ForeColor = Green;
}
Else If ((FormView1.FindControl("TakenIntoEvidenceLabel") As Label).Text = "něcojinýho")
{
(FormView1.FindControl("TakenIntoEvidenceLabel") As Label).ForeColor = Red;
}
Else
{
co se má stát, když neprojde ani jedna podmínka
}
Editováno 15.9.2014 19:54
Nahoru Odpovědět
15.9.2014 19:51
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 20:04

tak jinak, to předchozí jsem si vyzkoušel a nejde...

if ((FormView1.FindControl("jmenoLabel") as Label).Text == "pepík")
{
  (FormView1.FindControl("jmenoLabel") as Label).ForeColor = System.Drawing.Color.Green;
}

tohle jde...

Editováno 15.9.2014 20:05
Nahoru Odpovědět
15.9.2014 20:04
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 20:08

Díky, ale tak to jsem měl napsáno (v podmínce, ale ==). Háže mi to chybu v zadání barvy. To mě právě zmátlo. ForeColor = Barva nelze zadat.

 
Nahoru Odpovědět
15.9.2014 20:08
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 20:19

Tohle je ono!!!. Díky moc!!!

 
Nahoru Odpovědět
15.9.2014 20:19
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 20:23

Opět chyba. server hlásí:

Odkaz na objekt není nastaven na instanci objektu.

Popis: Při provádění aktuálního webového požadavku došlo k neošetřené výjimce. Další informace o chybě a o jejím původu v kódu naleznete v trasování zásobníku.

Podrobnosti o výjimce: System.NullRe­ferenceExcepti­on: Odkaz na objekt není nastaven na instanci objektu.

Zdrojová chyba:

Řádek 13: {
Řádek 14:
Řádek 15: if((FormView1­.FindControl("Me­asGlobalStatus­Label") as Label).Text == "Vyhovuje")
Řádek 16: {
Řádek 17: (FormView1.Fin­dControl("Meas­GlobalStatusLa­bel") as Label).ForeColor = System.Drawin­g.Color.Green;

Zdrojový soubor: g:\C#\Programo­vání\2013\eli_e­lektro\eli_elek­tro\Spotr\Spo­trebicDetail.as­px.cs Řádek: 15

Trasování zásobníku:

[NullReference­Exception: Odkaz na objekt není nastaven na instanci objektu.]
eli_elektro.Spo­tr.SpotrebicDe­tail.Page_Load(Ob­ject sender, EventArgs e) in g:\C#\Programo­vání\2013\eli_e­lektro\eli_elek­tro\Spotr\Spo­trebicDetail.as­px.cs:15
System.Web.Util­.CalliEventHan­dlerDelegatePro­xy.Callback(Ob­ject sender, EventArgs e) +51
System.Web.UI­.Control.OnLo­ad(EventArgs e) +92
System.Web.UI­.Control.Load­Recursive() +54
System.Web.UI­.Page.ProcessRe­questMain(Boo­lean includeStages­BeforeAsyncPo­int, Boolean includeStagesAf­terAsyncPoint) +772

 
Nahoru Odpovědět
15.9.2014 20:23
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 20:38

Když se načítá stránka, jaký Template FormView se ti načítá? Nemáš ty Labely náhodou v Template, který po načtení stránky není aktivní? Tomu by ta chyba odpovídala...

Nahoru Odpovědět
15.9.2014 20:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 20:41

Je to v ItemTemplate

 
Nahoru Odpovědět
15.9.2014 20:41
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 20:51

A po načtení stránky je ItemTemplate aktivní?
A bez toho ifu se ti do stránky data načtou správně?

Editováno 15.9.2014 20:52
Nahoru Odpovědět
15.9.2014 20:51
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 20:58

Přesně tak. Data vidím normálně. Pokud tam není ta podmínka. Dá se to nějak převést do jiného Item? Mám tam ještě dva, ale ty nejsou vidět a jsou v nich textboxy. EditItem a InsertItem. Ve vlastostech je nastavení ItemType, nebude zrada tam?

Editováno 15.9.2014 20:59
 
Nahoru Odpovědět
15.9.2014 20:58
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 21:02

Zkus si do toho FormView vložit ručně nějaký Label a v kódu mu zkus přidat nějaké vlastnosti, jestli to bude fungovat.
Ještě mě napadlo, skutečně má ten label ID=MeasGlobal­StatusLabel?

Nahoru Odpovědět
15.9.2014 21:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 21:12

ID je v pořádku a přidaný Lebel funguje s prostým textem i s daty, ale ještě něco zkusím

Editováno 15.9.2014 21:13
 
Nahoru Odpovědět
15.9.2014 21:12
Avatar
Maros2470
Člen
Avatar
Maros2470:15.9.2014 21:29

Když přidám Label do FormView a dám ručně text - funguje.
Když přidám Label do FormView a zadám data - funguje.
Když přidám Label na stránku v kódu je vidět.
Když přidám Label do FormView v kódu není vidět a hlásí stejnou chybu

Editováno 15.9.2014 21:32
 
Nahoru Odpovědět
15.9.2014 21:29
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 22:45

a při jaké události to v tom kódu voláš?

Nahoru Odpovědět
15.9.2014 22:45
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 22:48

protected void Page_Load(object sender, EventArgs e)

už jsem nad tím také uvažoval, jestli není chyba tady.

Editováno 15.9.2014 22:50
 
Nahoru Odpovědět
15.9.2014 22:48
Avatar
Michal Štěpánek:15.9.2014 22:50

tak už jsem z toho srnec, daněk, jelen...

Nahoru Odpovědět
15.9.2014 22:50
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 22:51

Já taky, už jsem snad vyzkoušel všechno. Když jsi to zkoušel, tobě to chodilo?

 
Nahoru Odpovědět
15.9.2014 22:51
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 22:54

Zkusím ten FormView udělat znovu

 
Nahoru Odpovědět
15.9.2014 22:54
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 22:56

Když je nějaký prvek ve FormView, tak v kódu být vidět nemůže a dostat se k němu lze jen přes "FindControl".
Zkusil jsi tomu ručně přidanému Labelu do FormView nastavit z kódu nějaký text?
Pokud to nefunguje, pak mě už napadá jediné - zrušit tu stránku a založit ji znovu od začátku...
Mě to přes FindControl funguje normálně.

Nahoru Odpovědět
15.9.2014 22:56
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Maros2470:15.9.2014 22:59

To jsem zkoušel a fungovalo to

 
Nahoru Odpovědět
15.9.2014 22:59
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:15.9.2014 23:05

Dneska už na to kašli. Zítra snad budeme moudřejší. Každopádně díky.

 
Nahoru Odpovědět
15.9.2014 23:05
Avatar
Odpovídá na Maros2470
Michal Štěpánek:15.9.2014 23:21

Ještě mě napadlo, jestli tam máš odchyceny všechny možnosti "textů", které se mohou vyskytnout v tom labelu. Mohlo by to být tím, že podmínce nevyhovuje nic a vyhodí to chybu..., to ale už 'vařím z vody'...
Teď jsem to zkoušel a normálně mi to funguje, text se v labelu ve FormView barví, jak potřebuju...

Nahoru Odpovědět
15.9.2014 23:21
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Maros2470:15.9.2014 23:25

Zkusil jsem i ListView a je to to samé, mám i novou stránku

 
Nahoru Odpovědět
15.9.2014 23:25
Avatar
Maros2470
Člen
Avatar
Maros2470:15.9.2014 23:27

Je otázka zda mám dobře nastavený View

 
Nahoru Odpovědět
15.9.2014 23:27
Avatar
Odpovídá na Maros2470
Michal Štěpánek:16.9.2014 7:27

Zruš tu stránku celou a založ jí znovu od začátku..., to musí fungovat. 8-)

Nahoru Odpovědět
16.9.2014 7:27
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:16.9.2014 7:31

Jenom mně napadlo. V jaké verzi VS to děláš? Já mám VS 2013 Ultimate, tedy FW 4.5.1.
Nemůže to být rozdílnými knihovnami FW?

 
Nahoru Odpovědět
16.9.2014 7:31
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:16.9.2014 7:48

Upravil jsem FW na 4.5. Chybu nevyhazuje, ale taky nebarví.

 
Nahoru Odpovědět
16.9.2014 7:48
Avatar
Odpovídá na Maros2470
Michal Štěpánek:16.9.2014 8:27

Já dělám ve VS2013 Express for WEB (FW 4.5)

Nahoru Odpovědět
16.9.2014 8:27
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:16.9.2014 10:31

Udělal jsem úplně novou aplikaci s jednou stránkou a problém je stejný. Faktu už nevím.

 
Nahoru Odpovědět
16.9.2014 10:31
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:17.9.2014 15:25

Zkoušel jsem to i takhle a nic. Stejná chyba.

var statusLabel = FormView1.FindControl("MeasGlobalStatusLabel") as Label;
switch(statusLabel.Text)
{
    case "Vyhovuje":
        statusLabel.ForeColor = System.Drawing.Color.Green;
        break;
    case "Nevyhovuje":
        statusLabel.ForeColor = System.Drawing.Color.Red;
        break;
}
 
Nahoru Odpovědět
17.9.2014 15:25
Avatar
coells
Tvůrce
Avatar
Odpovídá na Maros2470
coells:17.9.2014 16:25
var statusLabel = FindControl<Label>(FormView1, "MeasGlobalStatusLabel");

        private static T FindControl<T>(Control control, string id) where T : Control
        {
            if (control == null)
                return null;

            if (control.ID == id)
                return (T)control;

            return control.Controls.OfType<Control>().Select(c => FindControl<T>(c, id)).Where(c => c != null).FirstOrDefault();
        }
Editováno 17.9.2014 16:25
 
Nahoru Odpovědět
17.9.2014 16:25
Avatar
Maros2470
Člen
Avatar
Odpovídá na coells
Maros2470:17.9.2014 19:10

Zdravím. Mám to napsáno takto:

public partial class SpotrebicDetail : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var statusLabel = FindControl<Label>(FormView1, "MeasGlobalStatusLabel");

            statusLabel.Text = "Ahoj";




        }

        private static T FindControl<T>(Control control, string id) where T : Control
        {
            if (control == null)
                return null;

            if (control.ID == id)
                return (T)control;

            return control.Controls.OfType<Control>().Select(c => FindControl<T>(c, id)).Where(c => c != null).FirstOrDefault();




        }

, ale vyhazuje to pořád chybu:

Odkaz na objekt není nastaven na instanci objektu.

Popis: Při provádění aktuálního webového požadavku došlo k neošetřené výjimce. Další informace o chybě a o jejím původu v kódu naleznete v trasování zásobníku.

Podrobnosti o výjimce: System.NullRe­ferenceExcepti­on: Odkaz na objekt není nastaven na instanci objektu.

Zdrojová chyba:

Řádek 17: var statusLabel = FindControl<La­bel>(FormView1, "MeasGlobalSta­tusLabel");
Řádek 18:
Řádek 19: statusLabel.Text = "Ahoj";
Řádek 20:
Řádek 21:

Zdrojový soubor: g:\C#\Programo­vání\2013\eli_e­lektro\eli_elek­tro\Spotr\Spo­trebicDetail.as­px.cs Řádek: 19

Trasování zásobníku:

[NullReference­Exception: Odkaz na objekt není nastaven na instanci objektu.]
eli_elektro.Spo­tr.SpotrebicDe­tail.Page_Load(Ob­ject sender, EventArgs e) in g:\C#\Programo­vání\2013\eli_e­lektro\eli_elek­tro\Spotr\Spo­trebicDetail.as­px.cs:19
System.Web.Util­.CalliEventHan­dlerDelegatePro­xy.Callback(Ob­ject sender, EventArgs e) +51
System.Web.UI­.Control.OnLo­ad(EventArgs e) +92
System.Web.UI­.Control.Load­Recursive() +54
System.Web.UI­.Page.ProcessRe­questMain(Boo­lean includeStages­BeforeAsyncPo­int, Boolean includeStagesAf­terAsyncPoint) +772

Ta chyba je v tom statusLabel.Text = "Ahoj"; To ahoj je tam jen zkušebně

Editováno 17.9.2014 19:12
 
Nahoru Odpovědět
17.9.2014 19:10
Avatar
coells
Tvůrce
Avatar
Odpovídá na Maros2470
coells:17.9.2014 19:26

V tom případě ve formuláři není control s takovým ID.

 
Nahoru Odpovědět
17.9.2014 19:26
Avatar
Odpovídá na Maros2470
Michal Štěpánek:17.9.2014 19:38

a když to napíšeš takhle

(FormView1.FindControl("MeasGlobalStatusLabel") as Label).Text = "Ahoj"

tak to taky nejde?

Nahoru Odpovědět
17.9.2014 19:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na coells
Maros2470:17.9.2014 19:46

Právě, že je:

<span style="color: black; font-size:large; text-align:right"><asp:Label ID="MeasGlobalStatusLabel" runat="server" Text='<%# Bind("MeasGlobalStatus") %>' /></span>

                        </td>
 
Nahoru Odpovědět
17.9.2014 19:46
Avatar
Maros2470
Člen
Avatar
Odpovídá na Michal Štěpánek
Maros2470:17.9.2014 19:51

Stejná chyba

 
Nahoru Odpovědět
17.9.2014 19:51
Avatar
Odpovídá na Maros2470
Michal Štěpánek:17.9.2014 19:51

a bez toho "spanu" jsi to zkoušel, jestli se něco změní? Protože jestli tam ten span máš jen kvůli stylování toho labelu, tak to můžeš udělat přímo do "toho" labelu...

Editováno 17.9.2014 19:52
Nahoru Odpovědět
17.9.2014 19:51
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
coells
Tvůrce
Avatar
Odpovídá na Maros2470
coells:17.9.2014 21:09

A já tvrdím, že tam není. Můžeme nad tím bádat, můžeme nad tím diskutovat, ale jednoduše tam není.

Pokud máš label definovaný ve FormView.Item­Template, tak se nevygeneruje, dokud do FormView nenavážeš data.

Takže jsou následující možnosti:

  1. snažíš se dostat na label příliš brzo (netuším, jak binduješ datasource), což zjistíš tak, že se podíváš do vygenerovaného html a najdeš tam span id="mainconten­t_formview1_Me­asGlobalStatus­Label"
  2. žádný takový element tam nenajdeš, tím pádem máš špatný datasource
  3. přečti si nějakou knihu o ASP.NET, ušetříš si tím tunu času
 
Nahoru Odpovědět
17.9.2014 21:09
Avatar
Maros2470
Člen
Avatar
Odpovídá na coells
Maros2470:17.9.2014 21:31

V tom html to je: MeasGlobalStatus:
<span id="MainConten­t_FormView1_Me­asGlobalStatus­Label">Vyhovu­je </span>

Na ten Label odkazuji v události Page_Load, to bude asi brzo. Můžeš mi prosím poradit v jaké události bych na něj měl odkazovat?

 
Nahoru Odpovědět
17.9.2014 21:31
Avatar
Maros2470
Člen
Avatar
Odpovídá na coells
Maros2470:17.9.2014 21:36

Můžeš mi nějakou knihu doporučit?

 
Nahoru Odpovědět
17.9.2014 21:36
Avatar
coells
Tvůrce
Avatar
Odpovídá na Maros2470
coells:17.9.2014 21:46

Page_Load() se zavolá ve chvíli, kdy se nahrála stránka, takže obvykle bývají kontrolní prvky už k dispozici, ale stále před zpracováním událostí. OnPreRender() se volá až po zpracování událostí a často bývá výhodnější mít kód tam, záleží případ od případu.

Udělej si naprosto minimální Default.aspx s FormView, v něm binding a vyzkoušej, jestli ti to funguje. Pokud ne, pošli mi kód aspx i aspx.cs, abych ti tam mohl najít chybu. Nemám tušení, co tam děláš špatně.

Z trochu jiného soudku, magická metoda Page_Load() by se neměla používat, používej radši OnLoad(). Page_Load() je pozůstatek ASP, který do ASP.NET nepatří.

 
Nahoru Odpovědět
17.9.2014 21:46
Avatar
coells
Tvůrce
Avatar
Odpovídá na Maros2470
coells:17.9.2014 21:50

Je to v podstatě jedno, skoro všechny mají přes 1000 stránek a skoro všechny jsou o tom samém. Dříve jsem kupoval přes Amazon, což je už léta jednodušší díky německému Amazonu, dneska už kupuji pouze na Kindle. Knihy v češtině se nevyplatí.

 
Nahoru Odpovědět
17.9.2014 21:50
Avatar
Odpovídá na Maros2470
Michal Štěpánek:17.9.2014 22:00

http://www.webforms.cz/Tutorialy.aspx
je to sice ze starší verze, ale je tam mnoho užitečných rad...

Nahoru Odpovědět
17.9.2014 22:00
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Maros2470
Člen
Avatar
Odpovídá na coells
Maros2470:19.9.2014 13:13

Tak jsem udělal úplně jednoduchou aplikaci s jednou stránkou:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace Zkoska1
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var statusLabel = FindControl<Label>(FormView1, "StatusLabel");
            if (statusLabel.Text == "Vyhovuje")
            {
                statusLabel.BackColor = System.Drawing.Color.Green;
            }

            else if (statusLabel.Text == "Nevyhovuje")
            {
                statusLabel.BackColor = System.Drawing.Color.Red;
            }


        }

        private static T FindControl<T>(Control control, string id) where T : Control
        {
            if (control == null)
                return null;

            if (control.ID == id)
                return (T)control;

            return control.Controls.OfType<Control>().Select(c => FindControl<T>(c, id)).Where(c => c != null).FirstOrDefault();
        }
    }
}
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Zkoska1._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

    <asp:TextBox ID="txbPrijmeni" runat="server"></asp:TextBox>

   <asp:FormView ID="FormView1" runat="server" DataKeyNames="Id" DataSourceID="SqlDataSource1">
       <EditItemTemplate>
           Id:
           <asp:Label ID="IdLabel1" runat="server" Text='<%# Eval("Id") %>' />
           <br />
           Jmeno:
           <asp:TextBox ID="JmenoTextBox" runat="server" Text='<%# Bind("Jmeno") %>' />
           <br />
           Prijmeni:
           <asp:TextBox ID="PrijmeniTextBox" runat="server" Text='<%# Bind("Prijmeni") %>' />
           <br />
           Mesto:
           <asp:TextBox ID="MestoTextBox" runat="server" Text='<%# Bind("Mesto") %>' />
           <br />
           Status:
           <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
           <br />
           <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Aktualizovat" />
           &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Storno" />
       </EditItemTemplate>
       <InsertItemTemplate>
           Jmeno:
           <asp:TextBox ID="JmenoTextBox" runat="server" Text='<%# Bind("Jmeno") %>' />
           <br />
           Prijmeni:
           <asp:TextBox ID="PrijmeniTextBox" runat="server" Text='<%# Bind("Prijmeni") %>' />
           <br />
           Mesto:
           <asp:TextBox ID="MestoTextBox" runat="server" Text='<%# Bind("Mesto") %>' />
           <br />
           Status:
           <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
           <br />
           <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Vložit" />
           &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Storno" />
       </InsertItemTemplate>
       <ItemTemplate>
           Id:
           <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
           <br />
           Jmeno:
           <asp:Label ID="JmenoLabel" runat="server" Text='<%# Bind("Jmeno") %>' />
           <br />
           Prijmeni:
           <asp:Label ID="PrijmeniLabel" runat="server" Text='<%# Bind("Prijmeni") %>' />
           <br />
           Mesto:
           <asp:Label ID="MestoLabel" runat="server" Text='<%# Bind("Mesto") %>' />
           <br />
           Status:
           <asp:Label ID="StatusLabel" runat="server" Text='<%# Bind("Status") %>' />
           <br />

       </ItemTemplate>
    </asp:FormView>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Osoby] WHERE ([Prijmeni] = @Prijmeni)">
        <SelectParameters>
            <asp:ControlParameter ControlID="txbPrijmeni" Name="Prijmeni" PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

</asp:Content>

Data v tabulce nemají žádný význam je to jen na zkoušku

Editováno 19.9.2014 13:15
 
Nahoru Odpovědět
19.9.2014 13:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 55.