我有两个网格视图。第一个有一个下拉列表。当用户点击名为' Show'的按钮时数据将显示在数据来自数据库的两个网格视图中。必须将具有下拉列表的列上的行数据与第二个gridview的第一列上的行进行比较。如果它们相等,则消息框将提示说没有更改并且数据将不会被保存,否则如果它们不相等则将显示模态弹出窗口,询问数据是否正确。
下面是我的比较代码,但它只读取gridview1中第1行的值。
For i = 0 To GridView1.Rows.Count - 1
Dim ddl As DropDownList = DirectCast(GridView1.Rows(i).Cells(6).FindControl("dropdowncriteria"), DropDownList)
Dim txt As TextBox = DirectCast(GridView1.Rows(i).Cells(7).FindControl("txtreason"), TextBox)
If ddl.SelectedValue = GridView2.Rows(i).Cells(0).Text And txt.Text = GridView2.Rows(i).Cells(1).Text Then
MessageBox("No Changes Made! Nothing will be Saved.")
Return
Else
lblmsg.Text = "Are you sure that all the Data you've Selected/Entered are Correct?"
mdlpopupmsg.Show()
Return
End If
Next
这个问题一定是什么问题?
提前致谢。
答案 0 :(得分:1)
它只读取第一个值(i = 0),因为return语句导致for循环在第一次比较后退出。如果要比较所有行,则需要一个变量来跟踪每行的if测试结果。像这样:
Dim hasChanges As Boolean = False
For i = 0 To GridView1.Rows.Count - 1
...
If ddl.SelectedValue = GridView2.Rows(i).Cells(0).Text And txt.Text = GridView2.Rows(i).Cells(1).Text Then
'do nothing
Else
hasChanges = True
End If
Next
If hasChanges Then
MessageBox("Has changes.")
Else
MessageBox("No changes.")
End If
答案 1 :(得分:0)
Dim itemt As Double
If (DataGridCart.RowCount() > 0) Then
For i = 0 To DataGridCart.Rows.Count - 1
'if itemt as double
itemt = Val(Trim(txtItem.Text))
If ((DataGridCart.Rows(i).Cells("Item").Value).Equals(itemt)) Then
MsgBox("existing entry")
End If
Next
End If