我需要根据一个数据集的结果,检查的复选框。如果结果是1,那么复选框应进行检查,没有检查,如果它是一个0 [英] I need to check a checkbox based on the result of a dataset. If the result is 1 then checkbox should be checked and not checked if it's a 0

查看:122
本文介绍了我需要根据一个数据集的结果,检查的复选框。如果结果是1,那么复选框应进行检查,没有检查,如果它是一个0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我在GridView中删除一行时,它不会删除选择要删除的行并将其删除GridView控件的最后一行。它也清除,现在是最后一行的行的用户输入,但所有其它行的维持它们的输入。任何帮助是极大的AP preciated。

When I delete a row from the gridview, it doesn't delete the row that is chosen to be deleted and it deletes the last row of the gridview. It also clears the user input of the row that is now the last row, but all of the other rows maintain their inputs. Any help on this is greatly appreciated.

下面是我的RowDeleting子:

Here is my RowDeleting sub:

Protected Sub gvPDetails_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvPDetails.RowDeleting

    If ViewState("CurrentTable") IsNot Nothing Then
        Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
        Dim delRowIndex As Integer = Convert.ToInt32(e.RowIndex)
        Dim delRow As DataRow = dt.Rows(delRowIndex)
        dt.Rows.Remove(delRow)
        SetRowData()
        ViewState("CurrentTable") = dt
    End If
End Sub

下面是SetRowData()

Here is the SetRowData()

Private Sub SetRowData()

    Dim rowIndex As Integer = 0

    Dim arrl1 As New ArrayList()
    Dim arrl2 As New ArrayList()
    Dim arrl3 As New ArrayList()

    If ViewState("CurrentTable") IsNot Nothing Then
        Dim dtCurrentTable As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
        Dim drCurrentRow As DataRow = Nothing

        If dtCurrentTable.Rows.Count > 0 Then

            For i As Integer = 0 To dtCurrentTable.Rows.Count - 1
                //extract the TextBox values 
                Dim box1 As TextBox = DirectCast(gvPDetails.Rows(rowIndex).FindControl("txtStore"), TextBox)
                //extract the DropDownList Selected Items 
                Dim ddl1 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlStatus"), DropDownList)
                Dim ddl2 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlReason"), DropDownList)
                Dim ddl3 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlPldDetail"), DropDownList)
                Dim box2 As TextBox = DirectCast(gvPDetails.Rows(rowIndex).FindControl("txtInfo"), TextBox)

                //Update the DataRow with the DDL Selected Items 
                dtCurrentTable.Rows(rowIndex)("Store") = box1.Text
                dtCurrentTable.Rows(rowIndex)("Status") = ddl1.SelectedItem.Text
                myDD1 = ddl1.SelectedItem.Text
                dtCurrentTable.Rows(rowIndex)("Reason") = ddl2.SelectedItem.Text
                myDD2 = ddl2.SelectedItem.Text
                If ddl3 IsNot Nothing And ddl3.Enabled = True Then
                    dtCurrentTable.Rows(rowIndex)("Detail") = ddl3.SelectedItem.Text
                End If

                myDD3 = ddl3.SelectedItem.Text
                dtCurrentTable.Rows(rowIndex)("Information") = box2.Text

                rowIndex += 1

                Dim MemErrList As New ArrayList()
                Dim index As Integer = -1
                Dim row As GridViewRow = gvPDetails.Rows(i)
                index = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                Dim result As Boolean = DirectCast(gvPDetails.Rows(i).FindControl("ckbMemErr"), CheckBox).Checked

                //Check in the Session
                If Session("CHECKED_ITEMS") IsNot Nothing Then
                    MemErrList = DirectCast(Session("CHECKED_ITEMS"), ArrayList)
                End If
                If result Then
                    If Not MemErrList.Contains(index) Then
                        MemErrList.Add(index)
                    End If
                Else
                    MemErrList.Remove(index)
                End If
                //Next
                If MemErrList IsNot Nothing AndAlso MemErrList.Count > 0 Then
                    Session("CHECKED_ITEMS") = MemErrList
                End If

                //----SLS File Val Checkbox Array Builder-----------------------------
                Dim DetailList As New ArrayList()
                Dim index1 As Integer = -1
                Dim row1 As GridViewRow = gvPDetails.Rows(i)
                index1 = CInt(gvPDetails.DataKeys(row1.RowIndex).Value)
                Dim result1 As Boolean = DirectCast(gvPDetails.Rows(i).FindControl("cbSLSFileVal"), CheckBox).Checked

                //Check in the Session
                If Session("DETAIL1_ITEMS") IsNot Nothing Then
                    DetailList = DirectCast(Session("DETAIL1_ITEMS"), ArrayList)
                End If
                If result1 Then
                    If Not DetailList.Contains(index1) Then
                        DetailList.Add(index1)
                    End If
                Else
                    DetailList.Remove(index1)
                End If
                //Next
                If DetailList IsNot Nothing AndAlso DetailList.Count > 0 Then
                    Session("DETAIL1_ITEMS") = DetailList
                End If

                //----Router Checkbox Array Builder-----------------------------
                Dim DetailList2 As New ArrayList()
                Dim index2 As Integer = -1
                Dim row2 As GridViewRow = gvPDetails.Rows(i)
                index2 = CInt(gvPDetails.DataKeys(row2.RowIndex).Value)
                Dim result2 As Boolean = DirectCast(gvPDetails.Rows(i).FindControl("cbRouter"), CheckBox).Checked

                //Check in the Session
                If Session("DETAIL2_ITEMS") IsNot Nothing Then
                    DetailList2 = DirectCast(Session("DETAIL2_ITEMS"), ArrayList)
                End If
                If result2 Then
                    If Not DetailList2.Contains(index2) Then
                        DetailList2.Add(index2)
                    End If
                Else
                    DetailList2.Remove(index2)
                End If
                //Next
                If DetailList2 IsNot Nothing AndAlso DetailList2.Count > 0 Then
                    Session("DETAIL2_ITEMS") = DetailList2
                End If

                //----Register1 Checkbox Array Builder-----------------------------
                Dim DetailList3 As New ArrayList()
                Dim index3 As Integer = -1
                Dim row3 As GridViewRow = gvPDetails.Rows(i)
                index3 = CInt(gvPDetails.DataKeys(row3.RowIndex).Value)
                Dim result3 As Boolean = DirectCast(gvPDetails.Rows(i).FindControl("cbRegister1"), CheckBox).Checked

                //Check in the Session
                If Session("DETAIL3_ITEMS") IsNot Nothing Then
                    DetailList3 = DirectCast(Session("DETAIL3_ITEMS"), ArrayList)
                End If
                If result3 Then
                    If Not DetailList3.Contains(index3) Then
                        DetailList3.Add(index3)
                    End If
                Else
                    DetailList3.Remove(index3)
                End If
                //Next
                If DetailList3 IsNot Nothing AndAlso DetailList3.Count > 0 Then
                    Session("DETAIL3_ITEMS") = DetailList3
                End If

                //----Register2 Checkbox Array Builder-----------------------------
                Dim DetailList4 As New ArrayList()
                Dim index4 As Integer = -1
                Dim row4 As GridViewRow = gvPDetails.Rows(i)
                index4 = CInt(gvPDetails.DataKeys(row4.RowIndex).Value)
                Dim result4 As Boolean = DirectCast(gvPDetails.Rows(i).FindControl("cbRegister2"), CheckBox).Checked

                //Check in the Session
                If Session("DETAIL4_ITEMS") IsNot Nothing Then
                    DetailList4 = DirectCast(Session("DETAIL4_ITEMS"), ArrayList)
                End If
                If result4 Then
                    If Not DetailList4.Contains(index4) Then
                        DetailList4.Add(index4)
                    End If
                Else
                    DetailList4.Remove(index4)
                End If
                //Next
                If DetailList4 IsNot Nothing AndAlso DetailList4.Count > 0 Then
                    Session("DETAIL4_ITEMS") = DetailList4
                End If
                arrl1.Add(myDD1)
                arrl2.Add(myDD2)
                arrl3.Add(myDD3)
            Next
            //dtCurrentTable.Rows.Add(drCurrentRow)
            ViewState("CurrentTable") = dtCurrentTable

            //Rebind the Grid with the current data to reflect changes 
            gvPDetails.DataSource = dtCurrentTable
            gvPDetails.DataBind()
        End If
    Else

    End If
    //Set Previous Data on Postbacks 
    SetPrevDataOnDelete(arrl1, arrl2, arrl3)
End Sub

这里是设置prevDataOnDelete(arrl1,arrl2,arrl3)

And here is the SetPrevDataOnDelete(arrl1, arrl2, arrl3)

Private Sub SetPrevDataOnDelete(ByVal arrl1 As ArrayList, ByVal arrl2 As ArrayList, ByVal arrl3 As ArrayList)
    Dim rowIndex As Integer = 0
    myGridViewRow = 0
    If ViewState("CurrentTable") IsNot Nothing Then

        Dim dt As DataTable = DirectCast(ViewState("CurrentTable"), DataTable)
        If dt.Rows.Count > 0 Then
            Dim arr1 As ArrayList = arrl1
            Dim arr2 As ArrayList = arrl2
            Dim arr3 As ArrayList = arrl3

            For i As Integer = 0 To dt.Rows.Count - 1

                Dim box1 As TextBox = DirectCast(gvPDetails.Rows(rowIndex).FindControl("txtStore"), TextBox)
                Dim ddl1 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlStatus"), DropDownList)
                Dim ddl2 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlReason"), DropDownList)
                Dim ddl3 As DropDownList = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ddlPldDetail"), DropDownList)
                Dim box2 As TextBox = DirectCast(gvPDetails.Rows(rowIndex).FindControl("txtInfo"), TextBox)
                Dim cbResult As CheckBox = DirectCast(gvPDetails.Rows(rowIndex).FindControl("ckbMemErr"), CheckBox)


                //Fill the DropDownList with Data
                myGridViewRow = i
                //FillDropDownList(ddl1)
                FillDDL2OnDel(arrl1, rowIndex)
                FillDDL3OnDel(arrl1, arrl2, rowIndex)

                If i < dt.Rows.Count - 1 Then
                    //Assign the value from DataTable to the TextBox 
                    //gvPDetails.Rows(i).Cells(0).Text = Convert.ToString(i + 1)
                    box1.Text = dt.Rows(rowIndex)("Store").ToString()
                    box2.Text = dt.Rows(rowIndex)("Information").ToString()

                    ddl1.Items.FindByText(dt.Rows(rowIndex)("Status").ToString()).Selected = True
                    If ddl2 Is Nothing Then

                    ElseIf ddl2 Is Nothing Then

                    ElseIf ddl2 IsNot Nothing And ddl2.Enabled = True Then
                        ddl2.Items.FindByText(dt.Rows(rowIndex)("Reason").ToString()).Selected = True
                    End If

                    If ddl3 IsNot Nothing And ddl3.Enabled = True Then
                        ddl3.Items.FindByText(dt.Rows(rowIndex)("Detail").ToString()).Selected = True
                    End If


                    Dim MemErrList As ArrayList = DirectCast(Session("CHECKED_ITEMS"), ArrayList)
                    If MemErrList IsNot Nothing AndAlso MemErrList.Count > 0 Then
                        Dim row As GridViewRow = gvPDetails.Rows(i)
                        Dim index As Integer = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                        If MemErrList.Contains(index) Then
                            Dim myCheckBox As CheckBox = DirectCast(row.FindControl("ckbMemErr"), CheckBox)
                            myCheckBox.Checked = True
                        End If
                        //Next
                    End If

                    Dim DetailList As ArrayList = DirectCast(Session("DETAIL1_ITEMS"), ArrayList)
                    If DetailList IsNot Nothing AndAlso DetailList.Count > 0 Then
                        Dim row As GridViewRow = gvPDetails.Rows(i)
                        Dim index1 As Integer = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                        If DetailList.Contains(index1) Then
                            Dim myCheckBox1 As CheckBox = DirectCast(row.FindControl("cbSLSFileVal"), CheckBox)
                            myCheckBox1.Checked = True
                        End If
                        //Next
                    End If

                    Dim DetailList2 As ArrayList = DirectCast(Session("DETAIL2_ITEMS"), ArrayList)
                    If DetailList2 IsNot Nothing AndAlso DetailList2.Count > 0 Then
                        Dim row As GridViewRow = gvPDetails.Rows(i)
                        Dim index2 As Integer = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                        If DetailList2.Contains(index2) Then
                            Dim myCheckBox2 As CheckBox = DirectCast(row.FindControl("cbRouter"), CheckBox)
                            myCheckBox2.Checked = True
                        End If
                        //Next
                    End If

                    Dim DetailList3 As ArrayList = DirectCast(Session("DETAIL3_ITEMS"), ArrayList)
                    If DetailList3 IsNot Nothing AndAlso DetailList3.Count > 0 Then
                        Dim row As GridViewRow = gvPDetails.Rows(i)
                        Dim index3 As Integer = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                        If DetailList3.Contains(index3) Then
                            Dim myCheckBox3 As CheckBox = DirectCast(row.FindControl("cbRegister1"), CheckBox)
                            myCheckBox3.Checked = True
                        End If
                        //Next
                    End If

                    Dim DetailList4 As ArrayList = DirectCast(Session("DETAIL4_ITEMS"), ArrayList)
                    If DetailList4 IsNot Nothing AndAlso DetailList4.Count > 0 Then
                        Dim row As GridViewRow = gvPDetails.Rows(i)
                        Dim index4 As Integer = CInt(gvPDetails.DataKeys(row.RowIndex).Value)
                        If DetailList4.Contains(index4) Then
                            Dim myCheckBox4 As CheckBox = DirectCast(row.FindControl("cbRegister2"), CheckBox)
                            myCheckBox4.Checked = True
                        End If
                        //Next
                    End If

                End If
                rowIndex += 1
            Next
        End If
    End If
End Sub

任何帮助再次感谢。

Thanks again for any help.

推荐答案

是e.RowIndex回来,你是期待它正确的行数?

Is e.RowIndex returning the correct row number that you are expecting it to?

这篇关于我需要根据一个数据集的结果,检查的复选框。如果结果是1,那么复选框应进行检查,没有检查,如果它是一个0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆