当我点击显示时为什么总是替换第一个数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我点击显示时为什么总是替换第一个数据?相关的知识,希望对你有一定的参考价值。
我的系统有点问题,这是我的问题,当我插入数据,数据将显示在DatagridView
,现在,如果我再次插入不同的数据,DatagridView
中的第一个数据将删除,将被第二个数据替换。听起来很简单,但我已经尝试了一切,复制我的相同代码,搜索到互联网,但仍然遇到了同样的问题。
而且我还使用Breakpoint
来查看代码的去向以及触发的内容。
到目前为止这是我的代码。
If TxtRod_ID.Text = "" Then MsgBox("Please enter RD Code.") : Exit Sub
If rbRD.Checked = False And rbOSS.Checked = False Then MsgBox("Please select User On.") : Exit Sub
Dim cn As New OleDbConnection
Dim strUser As String = ""
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
If rbRD.Checked = True Then
RoDID = TxtRod_ID.Text
RdGetSrvr()
cn = New OleDbConnection(RDcon)
Try
If cn.State = ConnectionState.Closed Then cn.Open()
Catch ex As Exception
MessageBox.Show("Cannot connect to the database. Please contact the administrator.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
If rbUserName.Checked = True Then
If txtFname.Text.Trim() = "" And txtLname.Text.Trim() = "" Then MsgBox("Please enter First and/or Last Name of User.") : Exit Sub
strUser = "select * from USERS..MS_User where First_Name like '%" & txtFname.Text.Trim() & "%' and Last_Name like '%" & txtLname.Text.Trim() & "%'"
ElseIf rbUserId.Checked = True Then
If txtUserID.Text.Trim() = "" Then MsgBox("Please enter User ID.") : Exit Sub
strUser = "select * from USERS..MS_User where User_ID like '%" & txtUserID.Text.Trim() & "%'"
End If
Else
If rbUserId.Checked = True Then
If txtUserID.Text.Trim() = "" Then MsgBox("Please enter User ID.") : Exit Sub
COGetSrvr()
cn = New OleDbConnection(COcon)
cn.Open()
strUser = "select * from objUsr..user_locked_tbl where UserName like '%" & txtUserID.Text.Trim() & "%'"
End If
End If
cmd = New OleDbCommand(strUser, cn)
dr = cmd.ExecuteReader()
Dim ctr As Integer = 0
If dr.HasRows Then
While dr.Read
dgUser.Rows.Add()
If rbRD.Checked = True Then
dgUser("dgUserID1", ctr).Value = dr("User_ID")
dgUser("dgFname1", ctr).Value = dr("First_Name")
dgUser("dgLname1", ctr).Value = dr("Last_Name")
dgUser("dgPrimaryRole1", ctr).Value = dr("Primary_Role")
dgUser("dgUserStatus1", ctr).Value = dr("User_Status")
dgUser("dgULoginCnt1", ctr).Value = dr("Unsuccessful_Login_Count")
dgUser("dgDesig1", ctr).Value = dr("Designation")
Else
dgUser("dgUserID1", ctr).Value = dr("UserName")
dgUser("dgFname1", ctr).Value = ""
dgUser("dgLname1", ctr).Value = ""
dgUser("dgPrimaryRole1", ctr).Value = ""
dgUser("dgUserStatus1", ctr).Value = ""
dgUser("dgULoginCnt1", ctr).Value = ""
dgUser("dgDesig1", ctr).Value = ""
End If
End While
Else
MsgBox("No record found.")
Exit Sub
End If
End Sub
当我添加数据并单击按钮显示按钮。结果还可以。
现在,如果我再次添加数据。第一个数据将删除并替换为第二个数据。
正如你在结果2中看到的那样,有一个空白的row
,当我把它插入我的代码,dgUser.Rows.Clear
,当然空白的row
将删除,但我有同样的问题。
我想实现的是,如果我插入第一个数据,插入第二个数据时就不会删除它。
答案
看起来循环中的标志“ctr”没有改变。它是关于放置结果的行号,那么所有结果都会转到同一个地方吗?
另一答案
Dim ctr As Integer = 0
If dr.HasRows Then
While dr.Read
For ctr = 0 To dgUser.Rows.Count - 1
Next
dgUser.Rows.Add()
If rbRD.Checked = True Then
dgUser("dgUserID", ctr).Value = If(IsDBNull(dr("User_ID")) = True, "", dr("User_ID"))
dgUser("dgFname", ctr).Value = If(IsDBNull(dr("First_Name")) = True, "", dr("First_Name"))
dgUser("dgLname", ctr).Value = If(IsDBNull(dr("Last_Name")) = True, "", dr("Last_Name"))
dgUser("dgPrimaryRole", ctr).Value = If(IsDBNull(dr("Primary_Role")) = True, "", dr("Primary_Role"))
dgUser("dgUserStatus", ctr).Value = If(IsDBNull(dr("User_Status")) = True, "", dr("User_Status"))
dgUser("dgULoginCnt", ctr).Value = If(IsDBNull(dr("Unsuccessful_Login_Count")) = True, "", dr("Unsuccessful_Login_Count"))
dgUser("dgDesig", ctr).Value = If(IsDBNull(dr("Designation")) = True, "", dr("Designation"))
Else
dgUser("dgUserID", ctr).Value = If(IsDBNull(dr("UserName")) = True, "", dr("UserName"))
dgUser("dgFname", ctr).Value = ""
dgUser("dgLname", ctr).Value = ""
dgUser("dgPrimaryRole", ctr).Value = ""
dgUser("dgUserStatus", ctr).Value = ""
dgUser("dgULoginCnt", ctr).Value = ""
dgUser("dgDesig", ctr).Value = ""
End If
ctr += 1
End While
我知道了。我忘了在我的代码中插入For Loop
。谢谢@Terry D的想法。
以上是关于当我点击显示时为什么总是替换第一个数据?的主要内容,如果未能解决你的问题,请参考以下文章