Den heter vad du döpt den till. Allt är klasser och du anropar den som vilken annan klass som helst.
public class [B]MyUserControl1[/B] : System.Web.UI.UserControl {}
9 svar · 326 visningar · startad av asmodie
Jag har lagt in en usercontroll på sidan. På sidan finns det ett formulära som jag har generarat från en annan klass.
När jag sedan ska skicka i väg formulär datat så måste jag välja vilka fält jag ska ta med. Jag använder då
Request.Form["usercontrollnamn:fältnamn"] för att få ut värdet.
Jag vet vad fältnamnet heter, det är inte problemet, mitt problem är att jag inte vet hur jag får reda på usercontrollnamnet?
Någon som vet hur man får ut detta?
Den heter vad du döpt den till. Allt är klasser och du anropar den som vilken annan klass som helst.
public class [B]MyUserControl1[/B] : System.Web.UI.UserControl {}
Nej i detta fall funkar det inte på det sättet. För att när du drar in en usercontroll på en sida så får instansen ett annat namn. Som i mitt fall heter den UserCreationControl och på sidan heter den UserControll. Jag vill få utt UserControl1 på något sätt. Så problemet blir att om den inte kommer på samma plats eller döps till samma namn när man lägger in den på en sida så kommer programmet inte kunna hitta fälten.
ClientID eller bara ID bör nog innehålla det du letar efter.
Jo det är ID men måste jag loopa igenom alla form och kolla ändelsen på varje och sedan plocka ut namnet?
Varför inte bara ta emot data från formuläret genom att exempelvis skriva så här:
Dim str As string
str = formularfaltnamn.Text
Måste du över huvud taget veta användarkontrollens namn?
Här är i alla fall en intressant artikel på MSDN: Formbaserad programmering i ASP.NET :D
m_soderlund: Har du läst vad jag har skrivit?
Asså du kan inte anropa en klass du inte har instansierat i kontrollen. Så det ända jag har att gå efter när jag trycker på knappen är fältensnamn som alltid får namnet usercontrolnamnet
:fältID (som man har satt) Så det jag vill få tag i är usercontrolnamnet på instansen.
Ett förslag är att i stället för att hantera formuläret från din Page är det mycket lättare och smidigare att hantera det från den UserControl som den faktiskt ligger i, sedan kan du skapa publica funktioner i din UserControl om du vill att en knapp i din Page ska kunna göra saker med forumläret i din UserControl
Den lösningen fungerar inte pga att jag har dynamiska fällt. Jag vet inte hur många fält som ska skapas när jag kör mitt script. Jag använder mig av dynamsika fällt som läses in från en databas och sedan generaras. Därför kan jag inte få till gång till vad fältet genom att skriva det som en klass.
skulle jag skriva någon som liknar det här i usercontrollen
for(int i = 0; i < ds.tblUserfield.Row.Count; i++)
{
TextField myField = new TextField();
myField
pnlDisplay.Controls.Add(myField)
}
Så skulle jag aldrig kunna få ut fältklassinstansen ändå. Stort problem det där.
Tror ni man kan skriva något liknande som detta
this.ID
Tror jag löste det själv. Ska testa snart...
Ironi men jag löste det själv. Men tack för hjälpen allihopa.