NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Stano Klanduch:17.8.2015 13:24

Zdravim.

potrebujem poradit s ovladanim prvkov v Formview / GridView
Mám WEbForm s prvkami kde sú ja Dropdownlisty (DDL) VyberSkupinu a OrgJednotkaDrop­DownList.
VyberSkupinu DDL je priamo na stránke a OrgJednotkaDrop­DownList DDL je vo Formview1

Mam kod ktorým chcem riadit Enable/Disable DDL pri načítaní stránky
Zjednodušil som ho pre ukážku. Reálne testujem

if (Roles.IsUserInRole("presun"))
{
..
}

a podľa toho pri načítaní potrebujem zapnúť/vypnúť DDL.

Kod:

protected void Page_Load(object sender, EventArgs e)
  {
          ((DropDownList)FormView1.FindControl("OrgJednotkaDropDownList")).Enabled = true;
          VyberSkupinu.Enabled = true;
      }
  }

Neviem si to vysvetliť ale ten DDL čo je priamo na stránke funguje ale ten vo FormView nie

Ak to isté dám do metody tlacitka tak to funguje správne.

protected void Button1_Click(object sender, EventArgs e)
  {
          ((DropDownList)FormView1.FindControl("OrgJednotkaDropDownList")).Enabled = true;
          VyberSkupinu.Enabled = true;
      }
  }

použil som aj

DropDownList drop2 = FormView1.FindControl("OrgJednotkaDropDownList") as DropDownList;
drop2.Enabled = true;

ale je to to isté.

Podobne to blbne aj v Gride, ako keby pri loade stránky nepoznal alebo nevedel riadiť DDL vo Formviev .

Dík za pomoc.

 
Odpovědět
17.8.2015 13:24
Avatar
martin.vip
Člen
Avatar
martin.vip:18.8.2015 21:34

ahoj, no řešil bych funkcí ověření uživatele v jednotlivých akcích... načtení stránky, kliknutí na tlačítko atd...

 
Nahoru Odpovědět
18.8.2015 21:34
Avatar
Odpovídá na Stano Klanduch
Michal Štěpánek:19.8.2015 7:14

Pokud ti to na tlačítko funguje, znamená to, že chceš tu akci (enable/disable) provést ještě před tím, než se stránka vykreslí celá, nebo v tu chvíli ta stránka ještě neví o tom, že ve FormView1 nějaké DDL vůbec má. Zkus tu událost spustit až po načtení toho FormView1.
Např "ItemCreated" nebo "PreRender"

Editováno 19.8.2015 7:17
Nahoru Odpovědět
19.8.2015 7:14
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Stano Klanduch:19.8.2015 13:49

Vo FormView som to vyriesil malo to nejaky suvis s RedirectingSqlDa­taSource.

Ale v Gride to je problem.

V akej metode gridu by to bolo najlepsie riadit Enable/Disable mojho DDL aby pri prepnuti na editaciu riadka urobilo disable DDL ked je treba.

Dik

Editováno 19.8.2015 13:49
 
Nahoru Odpovědět
19.8.2015 13:49
Avatar
Odpovídá na Stano Klanduch
Michal Štěpánek:19.8.2015 15:04

Trošku jsem nepochopil

aby pri prepnuti na editaciu riadka urobilo disable DDL ked je treba.

Co to vlastně má dělat?

Nahoru Odpovědět
19.8.2015 15:04
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Stano Klanduch
Stano Klanduch:19.8.2015 16:58

Skusim to na obrazkoch
Ked nacitam stranku tak preverim ci ma uzivatel prava.
Ak má necham DDL zapnutý ak nemá tak ho vypnem a nastavim mu na tvrdo hodnotu OrgJednotka z Profilu.
Toto robim s FormView a funguje to.

Robim to v kode:

protected void Page_Load(object sender, EventArgs e)
   {
       string OrgJednotkaS;
       int OrgJednotka;
       OrgJednotka = Profile.OrgJednotka;
       OrgJednotkaS = Profile.OrgJednotkaS;
       NaradieSqlDataSource.SelectParameters["OrgJednotka"].DefaultValue = OrgJednotka.ToString();
       txtOrgJednotkaS.Text = OrgJednotkaS;

       if (Roles.IsUserInRole("presun"))
       {
           ((DropDownList)FormView1.FindControl("OrgJednotkaDropDownList")).Enabled = true;
       }
       else
       {
           ((DropDownList)FormView1.FindControl("OrgJednotkaDropDownList")).Enabled = false;
           DropDownList txt = FormView1.FindControl("OrgJednotkaDropDownList") as DropDownList;
           txt.SelectedValue = OrgJednotka.ToString();

       }

To isté chcem aj v Gride , vid obrazok. Ked kliknem na editaciu riadka tak chcem podla prav uzivatela vypnut alebo zapnut DDL OrgJednotkaDrop. Ak ma prava moze smenit Org. jednotku ak nemá tak nemôze.

skusal som to v metode RowEditing aj PreRender (dokonca aj v PageLoad pôvodne) Gridu GridView1 ale nefunguje.

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
   {
       int OrgJednotka;
       OrgJednotka = 0;
       OrgJednotka = Profile.OrgJednotka;
       DropDownList drop1 = GridView1.FindControl("OrgJednotkaDrop") as DropDownList;
       if (Roles.IsUserInRole("presun"))
       {
           if (drop1 != null)
           {
               ((DropDownList)GridView1.FindControl("OrgJednotkaDrop")).Enabled = true;
           }
       }
       else
       {
           if (drop1 != null)
           {
               ((DropDownList)GridView1.FindControl("OrgJednotkaDrop")).Enabled = false;
               drop1.SelectedValue = OrgJednotka.ToString();
           }

       }

Dufam ze je to teraz trochu zrozumiteľnejšie.
Dik vopred za radu.

Stano

Editováno 19.8.2015 17:00
 
Nahoru Odpovědět
19.8.2015 16:58
Avatar
Odpovídá na Stano Klanduch
Michal Štěpánek:19.8.2015 18:13

Já bych to asi řešil dvěma GridView. V jednom by bylo povoleno, v druhém ne a podle práv by se zobrazoval první, nebo druhý.

Editováno 19.8.2015 18:14
Nahoru Odpovědět
19.8.2015 18:13
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
martin.vip
Člen
Avatar
martin.vip:19.8.2015 18:55

Jak píše Michal, je to jednodušší a hlavně se uplatní zviditelnění na celý prvek

 
Nahoru Odpovědět
19.8.2015 18:55
Avatar
Odpovídá na martin.vip
Stano Klanduch:19.8.2015 19:48

fú ha nieje to tam trocha zvláštne.

 
Nahoru Odpovědět
19.8.2015 19:48
Avatar
martin.vip
Člen
Avatar
martin.vip:20.8.2015 15:23

Není jednodušší napsat

if (Roles.IsUserInRole("presun"))
       {
                Gridview1.visible = false
                gridview2.visible = true
        }
 
Nahoru Odpovědět
20.8.2015 15:23
Avatar
Odpovídá na martin.vip
Stano Klanduch:20.8.2015 17:58

Jasné , nakoniec som to tak urobil .

Len som nechcel mat vela kodu. Ale podstatné je že to funguje.

Dik

 
Nahoru Odpovědět
20.8.2015 17:58
Avatar
martin.vip
Člen
Avatar
martin.vip:20.8.2015 18:08

jasně, já se taky někdy snažím najít nějaké úplně nejvíc super programátorské řešení, ale někdy postačí to nejjednodušší a myslím že v ASP.net je to o trošku složitější než ve WF aplikacích...
Ale jak píšeš hlavně že to funguje tak jak chceš

 
Nahoru Odpovědět
20.8.2015 18:08
Avatar
Stano Klanduch:21.8.2015 19:12

Ale aj napriek tomu by som rád vedel, kedy vlastne objekty v Gride (napríklad už len Button...) už existujú a v ktorej metóde či už Gridu alebo stránky ich viem nájsť a identifikovať.

Dik

 
Nahoru Odpovědět
21.8.2015 19:12
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 13 zpráv z 13.