首页 > 解决方案 > 我需要 vb 中关于如何在我的项目中循环 2 个 datagridview 的正确代码

问题描述

我正在开发一个酒店应用程序,其中一个功能是具有 2 种费率类型,即机架费率和周末费率。

我有 2 个 datagridview,一个将存储日期、天数和金额,而第二个 datagridview 只存储周末天数。

所以我希望当我单击保存按钮时,第一个 datagridview 行将搜索另一个 datagridview 以检查日单元格是否在第二个 datagridview 中,如果它在那里,它现在将选择金额但插入到金额列中。

我尝试了两组代码。第一个有效,但金额列中没有任何金额,只是完成日期和日期,但是当我尝试第二个代码时,没有任何效果

第一个代码

If dgw3.Rows.Count > 0 Then
            Dim dr As DataGridViewRow = dgw3.Rows(0)
            Dim dr2 As DataGridViewRow = dgwWeekend.Rows(0)
            If dr.Cells(1).Value.ToString() = dr2.Cells(0).Value.ToString() Then
                st1 = txtTariffWeekend.Text
            Else
                st1 = txtTariffWeekDay.Text
            End If
        End If
        Dim startDay1 As Date
        Dim endDay1 As Date
        startDay1 = dtpDateIn.Value.Date
        endDay1 = dtpDateOut.Value.Date
        Dim dayCtr1 As Date
        dayCtr1 = startDay1
        Do While (dayCtr1 <= endDay1.AddDays(-1))
            dgw3.Rows.Add(dayCtr1.Date.ToString(), dayCtr1.Date.DayOfWeek.ToString(), st1)
            dayCtr1 = dayCtr1.AddDays(1)
        Loop

第二个代码

If dgw3.Rows.Count > 0 Then
            Dim dr As DataGridViewRow = dgw3.Rows(0)
            Dim dr2 As DataGridViewRow = dgwWeekend.Rows(0)
            If dr.Cells(1).Value.ToString() = dr2.Cells(0).Value.ToString() Then
                st1 = txtTariffWeekend.Text
            Else
                st1 = txtTariffWeekDay.Text
            End If
            Dim startDay1 As Date
            Dim endDay1 As Date
            startDay1 = dtpDateIn.Value.Date
            endDay1 = dtpDateOut.Value.Date
            Dim dayCtr1 As Date
            dayCtr1 = startDay1
            Do While (dayCtr1 <= endDay1.AddDays(-1))
                dgw3.Rows.Add(dayCtr1.Date.ToString(), dayCtr1.Date.DayOfWeek.ToString(), st1)
                dayCtr1 = dayCtr1.AddDays(1)
                dgw3.Rows.Add(dr)
            Loop
        End If

标签: vb.netvisual-studiodatagridview

解决方案


我想我是通过添加此代码来解决的

 Dim startDay1 As Date
        Dim endDay1 As Date
        startDay1 = dtpDateIn.Value.Date
        endDay1 = dtpDateOut.Value.Date
        Dim dayCtr1 As Date
        dayCtr1 = startDay1
        Dim str As String
        str = Label19.Text
        Do While (dayCtr1 <= endDay1.AddDays(-1))
            con = New SqlConnection(cs)
            con.Open()
            Dim ct As String = "select Weekend from WeekendDetails where Weekend=@d1"
            cmd = New SqlCommand(ct)
            cmd.Connection = con
            cmd.Parameters.AddWithValue("@d1", str)
            rdr = cmd.ExecuteReader()
            If (rdr.Read()) Then
                st1 = txtTariffWeekend.Text
            Else
                st1 = txtTariffWeekDay.Text
            End If
            dgw3.Rows.Add(dayCtr1.Date.ToString(), dayCtr1.Date.DayOfWeek.ToString(), st1)
            dayCtr1 = dayCtr1.AddDays(1)
            str = dayCtr1.Date.DayOfWeek.ToString
        Loop

推荐阅读