如何将两个gridviews的行值与asp.net中的dropdownlist列进行比较?

时间:2014-06-04 05:46:14

标签: asp.net vb.net gridview

我有两个网格视图。第一个有一个下拉列表。当用户点击名为' 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

这个问题一定是什么问题?

提前致谢。

2 个答案:

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