Флажки в usercontrol не будут проверяться, хотя они говорят, что они - PullRequest
0 голосов
/ 15 февраля 2010

У меня есть простой пользовательский контроль, со списком данных и флажками внутри.

 <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>

Я проверяю их, используя код в пользовательском контроле:

 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 вызывающей веб-формы:

            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

Я говорю, что они ...

Я схожу с ума здесь! Почему это говорит мне, что они проверены, а они, очевидно, нет?

1 Ответ

0 голосов
/ 16 февраля 2010

Ну ... во-первых, вы не проверяете, отмечены ли ваши флажки, все, что вы делаете, это выводите значение "role". Что именно вы ожидаете здесь?

Два предложения: 1) Установите свойство Checked вашего CheckBox в aspx следующим образом:

<asp:CheckBox ID="CheckBoxDroit" runat="server"  Text='<%# Eval("droit_label") %>' Checked='<%# (Eval("droit_id") > 0).ToString()' />

2) Установить свойство в OnItemDataBound в коде позади

Происходит одно из двух: либо код, который вы ожидаете выполнить, в действительности не выполняется (т. Е. Является ли ваш блок if когда-либо истинным? неправильное время - после того, как страница уже обработана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...