我需要检查基于数据集结果1或0的复选框



我正试图根据数据集的结果检查我的复选框。Memory_Error是数据库中的列。当数据保存时,我插入1或0作为字符串。我看了又看,看了又看的例子,如何做到这一点,似乎没有得到的工作完成。我没有得到任何错误,我只是在应该被选中的时候得到了一个未选中的复选框。事先感谢您的任何帮助。如果我的解释不够简明,我深表歉意。

这是我的vb.net代码。

 Dim dap2 As New SqlDataAdapter("Select ID, Store, Status, Reason, Detail, Detail_1, Detail_2,  Detail_3, Information, Memory_Error, Detail_4 FROM PollDetail where Poll_Date = '" & pollDate & "'", conn)
    conn.Open()
    Dim ds2 As New DataSet
    dap2.Fill(ds2, "PollDet")
    gvEmailRes2.DataSource = ds2
    Dim i As Integer
    For i = 0 To gvEmailRes2.Rows.Count - 1
        '-------------ckbMemErr-----------------------------------------------------------------/////
        If ds2.Tables("PollDet").Rows(i).Item(9) = "1" Then
            Dim row2Fill As GridViewRow = gvEmailRes2.Rows(i)
            Dim cbMemErr As CheckBox = DirectCast(row2Fill.FindControl("ckbMemErr"), CheckBox)
            cbMemErr.Checked = True
        ElseIf ds2.Tables("PollDet").Rows(i).Item(9) = "0" Then
            Dim row2Fill As GridViewRow = gvEmailRes2.Rows(i)
            Dim cbMemErr As CheckBox = DirectCast(row2Fill.FindControl("ckbMemErr"), CheckBox)
            cbMemErr.Checked = False
        End If
 Next
    gvEmailRes2.DataBind()
    conn.Close()
    dap2.Dispose()

这是ASP。净

<asp:TemplateField HeaderText="Memory Error" SortExpression="Memory_Error" ItemStyle-    VerticalAlign="Top">
 <ItemTemplate>
  <asp:Label ID="Label2" runat="server" Text=""></asp:Label>
    <br />
  <asp:CheckBox ID="ckbMemErr" runat="server" Text="Memory Error" Font-Size="11px" />
 </ItemTemplate>
<ItemStyle VerticalAlign="Top" />
</asp:TemplateField>

填充网格时,删除您发布的for圈。相反,在RowDataBound事件中使用相同的逻辑:

步骤1 -加载数据

Dim dap2 As New SqlDataAdapter("Select ID, Store, Status, Reason, Detail, Detail_1, Detail_2,  Detail_3, Information, Memory_Error, Detail_4 FROM PollDetail where Poll_Date = '" & pollDate & "'", conn)
conn.Open()
Dim ds2 As New DataSet
dap2.Fill(ds2, "PollDet")
gvEmailRes2.DataSource = ds2
gvEmailRes2.DataBind()
conn.Close()
dap2.Dispose()

步骤2 -设置复选框

Private Sub gvEmailRes2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvEmailRes2.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim chk As Checkbox = CType(e.Row.FindControl("ckbMemErr"), Checkbox)
        Dim drv As DataRowView = CType(e.Row.DataItem, DataRowView)
        If Not chk Is Nothing and Not drv Is Nothing Then
            Dim err As Integer = 0
            If drv.Item("Memory_Error") <> "" and not IsDbNull(drv.Item("Memory_Error"))  Then
                err = CInt(drv.Item("Memory_Error"))
            End If
            If err = 1 Then
                chk.checked = True
            Else
                chk.checked = False
            End If
        End If
    End If
End Sub

最新更新