Diskuze: riadenie asp prvkov v formview / gridview

C# .NET .NET (C# a Visual Basic) riadenie asp prvkov v formview / gridview American English version English version

Avatar
klanduch
Člen
Avatar
klanduch:

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:

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 klanduch
Michal Štěpánek:

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
klanduch
Člen
Avatar
Odpovídá na Michal Štěpánek
klanduch:

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 klanduch
Michal Štěpánek:

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
klanduch
Člen
Avatar
Odpovídá na klanduch
klanduch:

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 klanduch
Michal Štěpánek:

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:

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
klanduch
Člen
Avatar
Odpovídá na martin.vip
klanduch:

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

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

Není jednodušší napsat

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

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:

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
klanduch
Člen
Avatar
klanduch:

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.