데이터리스트가있는 간단한 usercontrol과 체크 박스가 있습니다.usercontrol의 체크 박스는 확인되지 않습니다.
Public Sub CheckRole(ByVal role As Integer)
For Each dliOrganisme As DataListItem In Me.DataListOrganismes.Items
Dim DataListDroits As DataList = dliOrganisme.FindControl("DataListDroits")
If DataListDroits IsNot Nothing Then
For Each dliDroit As DataListItem In DataListDroits.Items
If role = CInt(CType(dliDroit.FindControl("HiddenFieldDroitID"), HiddenField).Value) Then
Dim CheckBoxDroit As CheckBox = dliDroit.FindControl("CheckBoxDroit")
CheckBoxDroit.Checked = True
End If
Next ' DataListDroits
End If
Next ' DataListItem
End Sub
그리고 호출하는 웹 양식의를 Page_Load에서 :
<asp:DataList ID="DataListDroits" runat="server" DataKeyField="droit_id" DataSourceID="SqlDroits">
<ItemTemplate>
<asp:HiddenField ID="HiddenFieldDroitID" runat="server" Value='<%# Eval("droit_id") %>' />
<asp:CheckBox ID="CheckBoxDroit" runat="server" Text='<%# Eval("droit_label") %>' />
</ItemTemplate>
</asp:DataList>
은 내가 UserControl을 뒤에 코드를 사용하여 확인
Dim CheckBoxesRoles1 As ASP.organisme_checkboxesroles_ascx = Me.FormViewRubrique.FindControl("CheckBoxesRoles1")
Dim rolesCoches As New List(Of Integer)
Dim cmdRoles As New SqlCommand("SELECT droit_id FROM o_droit_rubrique WHERE rubrique_id = @rubrique", conn)
cmdRoles.Parameters.AddWithValue("rubrique", Request.QueryString("rid"))
Dim rdrRoles As SqlDataReader = cmdRoles.ExecuteReader
While rdrRoles.Read
CheckBoxesRoles1.CheckRole(rdrRoles("droit_id"))
End While
rdrRoles.Close()
... 그럼에도 불구하고, 그들은 확인하지 않습니다 .
하지만 내가 할 경우이 :
Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete
Dim CheckBoxesRoles1 As ASP.organisme_checkboxesroles_ascx = Me.FormViewRubrique.FindControl("CheckBoxesRoles1")
If CheckBoxesRoles1 IsNot Nothing Then
For Each role As Integer In CheckBoxesRoles1.CheckedRoles
Response.Write("role : " & role & "<br>")
Next
End If
End Sub
나는 그들이 나에게 말한다 ...
는 여기 미친거야! 그들이 분명히 검사하지 않는 동안 검사를 받았다고 말하는 이유는 무엇입니까?
- 각 역할에 대해 정수로 As CheckBoxesRoles1.CheckedRoles는 컨트롤의 체크 된 모든 체크 상자를 반복합니다. 따라서 "role : x"를 쓰면 체크 박스가 선택되었음을 의미합니다. - 내가 제안한대로 할 수는 없지만 단지 적용되지 않습니다. - 중단 점은 코드가 내가 원하는 모든 곳으로 이동한다는 것을 알려줍니다. 다른 이벤트에서 "체크 박스"코드를 실행하려고합니다. 어쩌면, 당신이 제안한 것처럼, 그들은 페이지 수명주기에서 너무 늦게 체크되어 졌을 것입니다. – thomasb