Jag vill loop igenom alla kontroller på en aspx-sida. Detta gör jag med.
Dim col As ControlCollection = Page.Controls
Dim emu As IEnumerator = col.GetEnumerator()
While emu.MoveNext
End While
Problemet är att jag får i princip allt som har runat="server" på sig. Vilket är helt korrekt. Men jag vill kunna idenifiera Current med typeof eller liknande. Så att jag hittar just min DIV som jag har gjort. Hur gör jag det? Dessutom skulle jag vilja tagga min DIV med ett attribut som säger att den är redigerbar eller dylikt. Går det? Eftersom jag kan ha en eller flera divar som är redigerbara så eller inte.
Men med Findcontrol så måste jag väl veta vilket id diven har? Det vill jag inte behöva ange.
Men hur skall du veta vilken DIV som är Din om du inte vet ID:et på den. Även om du loopar igenom alla controller så måste du ju jämföra varje kontroll mot något (oftas ID:et) för att hitta rätt kontroll.
Det är därför jag vill ha ett attribut som jag kan läsa ut. Om det finns och det har värdet redigerbar. Ta då idet så gå loss.
Men som du skrev tidigare så kan du ju ha flera kontroller som har detta värde på ett attribut. Och det kan (kommer garanterat) komma tillfällen då du inte vill ändra alla kontroller utan bara just en specifik. Om du då bara kollar efter värdet i attributet så kommer du få träff på alla kontroller och inte den/de som du vill ändra på.
Gör som emission föreslå, skapa din kontroll, spara undan ID på den sedan hämtar du upp ID:et och använder det till FindControl.
For Each ctrl As Control In Me.form1.Controls
If TypeOf ctrl Is HtmlGenericControl Then
Dim htmlCtrl As HtmlGenericControl = CType(ctrl, HtmlGenericControl)
Dim attCol As AttributeCollection = htmlCtrl.Attributes
If attCol.Item("att1") <> Nothing And attCol.Item("att12") <> Nothing And attCol.Item("att3") <> Nothing Then
'Så nu kan jag göra vad jag vill med htmlCtrl. vilket är egentligen min div som springer på servern.
End If
End If
Next
130 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe