hvis du laver en usercontrol med denne code-behind :
Public Class SomeControl Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init InitializeComponent() End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim CheckBoxList1 As New System.Web.UI.WebControls.CheckBoxList CheckBoxList1.Items.Add("hej") CheckBoxList1.Items.Add("med") CheckBoxList1.Items.Add("dig") CheckBoxList1.AutoPostBack = True AddHandler CheckBoxList1.SelectedIndexChanged, AddressOf CheckBoxList1_SelectedIndexChanged1 Controls.Add(CheckBoxList1) 'og lige en knap så vi kan lave et postback Controls.Add(New Button) End Sub
Private Sub CheckBoxList1_SelectedIndexChanged1(ByVal sender As System.Object, ByVal e As System.EventArgs) Response.Write("test") End Sub
End Class
Observerer du så også fejlen, hvis du bare trækker den ind på en normal form ? (det skulle ikke særlig gerne være tilfældet)
sbj... bruger du en eller anden form for masterpages, eller har du af andre grunde en form på din usercontrol ? det ser umiddelbart sådan ud på det du får genereret (altså BuilderBlock:Form1)...
hvis det er tilfældet fikser servicepakken det sikkert som cbp skriver. jeg synes godt nok ikke lige det sådan umiddelbart fremgår af listen over fixes der er inkluderet i pakken, men der har tidligere været en hotfix ude omkring det.
cbp>> har du links til sider, hvor det fremgår at buggen er fikset i servicepakken ? (eller er det bare mig der har overset det på listen, og måske skulle spørge dig om links til gode optikere istededet ?)
Arh... der var den jo :o) http://support.microsoft.com/default.aspx?kbid=818803 der linkes til den fra 818803 Post-RTM .NET Framework 1.1 ASP.NET hotfix package symptoms på siden med listen over ting i servicepakken
Ja, det var det der skulle til for at rette denne fejl. Men efter opdateringen er den begyndt at lave noget mærkeligt, den kopiere/laver flere af samme listeitems hver gang jeg aktiverer autopostback.
Se min kode her:
Protected Form1 As HtmlForm = New HtmlForm() Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected cbliste As New System.Web.UI.WebControls.CheckBoxList() Protected rbliste As New System.Web.UI.WebControls.RadioButtonList()
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load InsertListsModelTwo() End Sub
Protected Sub InsertListsModelTwo() Dim dt As DataTable = CreateDataSource() Dim Singlebtn As RadioButton = Nothing Dim GroupLabel As Label = Nothing Dim HtmlWrite As HtmlTextWriterTag = Nothing Dim type As Integer Dim lasttype As Integer = 0 Dim listetype As Integer = 0 Dim lastlistetype As Integer = 0 Dim dr As DataRow Dim tmpNo As String Dim stdDefault As Integer Dim ItemDesc As String Dim ItemQuantity_per As Integer
For Each dr In dt.Rows tmpNo = dr("No") stdDefault = dr("defaultItem") type = CType(dr("type"), Integer) ItemDesc = dr("description") ItemQuantity_per = dr("Quantity_per")
If type = 2 Then listetype = CType(dr("ChoiceType"), Integer) 'Laver afslutning til grupper If lasttype = 1 Then If lastlistetype = 0 Then Form1.Controls.Add(rbliste) rbliste = Nothing ElseIf lastlistetype = 1 Then Form1.Controls.Add(cbliste) cbliste = Nothing End If End If '/Laver afslutning til grupper 'Laver Ny gruppeListe og Label If listetype = 0 Then rbliste = New RadioButtonList() AddHandler rbliste.SelectedIndexChanged, AddressOf cbliste_SelectedIndexChanged1 Me.Controls(1).Controls.Add(rbliste) 'Me.Controls(1).Controls.Add(New Button()) rbliste.AutoPostBack = True 'Me.Controls(1).Controls.Add(GetGroupLabel(tmpNo)) ElseIf listetype = 1 Then cbliste = New CheckBoxList() AddHandler cbliste.SelectedIndexChanged, AddressOf cbliste_SelectedIndexChanged1 Me.Controls(1).Controls.Add(cbliste) 'Me.Controls(1).Controls.Add(New Button()) cbliste.AutoPostBack = True ' Me.Controls(1).Controls.Add(GetGroupLabel(tmpNo)) ElseIf listetype = 2 Then Form1.Controls.Add(GetGroupLabel(tmpNo)) End If '/Laver Ny gruppeListe og Label lastlistetype = listetype ElseIf type = 1 Then If lastlistetype = 0 Then 'RadioListeItems rbliste.Items.Add(GetListItem(tmpNo, stdDefault, ItemQuantity_per, ItemDesc)) ElseIf lastlistetype = 1 Then 'CheckBoxItem cbliste.Items.Add(GetListItem(tmpNo, stdDefault, ItemQuantity_per, ItemDesc)) ElseIf lastlistetype = 2 Then '´Hidden Input Form1.Controls.Add(GetHiddens(tmpNo, stdDefault, ItemQuantity_per)) Form1.Controls.Add(GetLabel(ItemDesc)) End If End If lasttype = type Next If Not (rbliste Is Nothing) Then Form1.Controls.Add(rbliste) End If If Not (cbliste Is Nothing) Then Form1.Controls.Add(cbliste) End If End Sub
Protected Function GetListItem(ByVal name As String, ByVal stdDefault As Integer, ByVal ItemQuantity_per As Integer, ByVal description As String, Optional ByVal locked As Integer = 0) As ListItem Dim LocalListitem As New ListItem(name) LocalListitem.Selected = (1 = stdDefault) LocalListitem.Text = description LocalListitem.Value = name & "|#|" & ItemQuantity_per Return LocalListitem End Function
Protected Function GetHiddens(ByVal name As String, ByVal stdDefault As Integer, ByVal ItemQuantity_per As Integer) As HtmlInputHidden Dim x As New HtmlInputHidden() x.ID = name x.Value = name & "|#|" & ItemQuantity_per Return x End Function
Protected Function GetGroupLabel(ByVal name As String) As Label Dim x As New Label() x.Text = name x.Style.Add("font-weight", "bold") x.Style.Add("line-height", "50px") Return x End Function
Protected Function GetLabel(ByVal name As String) As Label Dim x As New Label() x.Text = name Return x End Function
Protected Function CreateDataSource() As DataTable Dim dt As DataTable = New DataTable("dummydata") dt.Columns.Add("type", GetType(Integer)) dt.Columns.Add("Choicetype", GetType(Integer)) dt.Columns.Add("no", GetType(String)) dt.Columns.Add("defaultitem", GetType(Integer)) dt.Columns.Add("Quantity_per", GetType(Integer)) dt.Columns.Add("description", GetType(String))
Private Sub cbliste_SelectedIndexChanged1(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim C As Control Dim StrC As String Dim i As Integer Dim li As ListItem For Each C In Form1.Controls If TypeOf C Is CheckBoxList Then Dim cbl As CheckBoxList = CType(C, CheckBoxList) For Each li In cbl.Items Dim selected As Boolean = li.Selected If selected = True Then StrC += li.Value & "<br>" End If Next ElseIf TypeOf C Is RadioButtonList Then Dim rbl As RadioButtonList = CType(C, RadioButtonList) For Each li In rbl.Items Dim selected As Boolean = li.Selected If selected = True Then StrC += li.Value & "<br>" End If Next ElseIf TypeOf C Is HtmlInputHidden Then Dim hli As HtmlInputHidden = CType(C, HtmlInputHidden) StrC += hli.Value & "<br>" End If Next
Protected Form1 As HtmlForm = New HtmlForm() bør kun være Protected Form1 As HtmlForm (da du har formen angivet deklerativt i din aspx-kode, burde framworket sikre dig en initialisering).
Jeg synes også det ser ud som om du både smider listerne ind med : Me.Controls(1).Controls.Add(rbliste)
og til sidste med : Form1.Controls.Add(rbliste)
Jeg synes du skal prøve at holde dig til denne her : Form1.Controls.Add(cbliste)
Hvis du bare tager den ene af listerne og skifter mellem AutoPostBack = True og False... Kan du så se præcis hvad der sker (så må du gerne skrive det her), og er det det samme hver gang ?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.