mysql - 如何在不使用 For Each 的情况下将单元格数据添加到具有绑定(bind)列的未绑定(bind)列? - VB网络

标签 mysql vb.net datagridview

祝大家好,我目前在使用绑定(bind)列在 datagridview 上添加未绑定(bind)列时遇到这种类型的问题。因为我不能使用这种类型的方法,而不必使用“for every statements”,我觉得这已经很烦人了。因为我试图通过不在这个网站上询问来解决这个问题。但是,是的,我已经放弃了。所以,这是我的代码。请帮我。

'------------REFRESH DISPLAY------------'
Public Sub RefreshDaysDetails()
    '------------CONNECTION DATABASE------------'
    Dim connectionDaysDetails As New SqlConnection(_1LoginForm.connectionstring)
    '------------QUERY------------'
    sqlDaysDetails = "SELECT Date,CONVERT(varchar(15), TimeIn, 100) AS 'Time In',CONVERT(varchar(15), TimeOut, 100) AS 'Time Out',DATEPART(hour, WorkingHours) AS 'Working Hours'  FROM [3EmployeeAttendance] WHERE TimeOut IS NOT NULL AND TimeIn IS NOT NULL"
    '------------START CONNECTION------------'
    connectionDaysDetails.Open()
    '------------SQL------------'
    sCommandDaysDetails = New SqlCommand(sqlDaysDetails, connectionDaysDetails)
    sAdapterDaysDetails = New SqlDataAdapter(sCommandDaysDetails)
    sBuilderDaysDetails = New SqlCommandBuilder(sAdapterDaysDetails)
    sDsDaysDetails = New DataSet()



    sAdapterDaysDetails.Fill(sDsDaysDetails, "DaysDetails")
    sTableDaysDetails = sDsDaysDetails.Tables("DaysDetails")

    '------------SET OF BINDING SOURCE------------'
    DaysDetailsbindingsource.DataSource = sDsDaysDetails.Tables("DaysDetails")


    '------------CONNECTION DATABASE------------'
    Dim connectionDaysDetailsTwo As New SqlConnection(_1LoginForm.connectionstring)
    '------------QUERY------------'
    sqlDaysDetailsTwo = "SELECT DATEPART(hour,TimeIn) as 'TotalWorkingHoursTimeIn',DATEPART(hour,TimeOut) as 'TotalWorkingHoursTimeOut'  FROM [3EmployeeAttendance] WHERE TimeOut IS NOT NULL AND TimeIn IS NOT NULL "

    '------------START CONNECTION------------'
    connectionDaysDetailsTwo.Open()

    '------------SQL------------'
    sCommandDaysDetailsTwo = New SqlCommand(sqlDaysDetailsTwo, connectionDaysDetailsTwo)
    sAdapterDaysDetailsTwo = New SqlDataAdapter(sCommandDaysDetailsTwo)
    sBuilderDaysDetailsTwo = New SqlCommandBuilder(sAdapterDaysDetailsTwo)


    '------------CODES TO DISPLAY DATA TO TEXTBOXES------------'
    sCommandDaysDetailsTwo.Prepare()
    sDataReaderDaysDetailsTwo = sCommandDaysDetailsTwo.ExecuteReader()

    For Each row In sDataReaderDaysDetailsTwo
        TotalWorkingHoursTimeIn = sDataReaderDaysDetailsTwo.Item("TotalWorkingHoursTimeIn")
        TotalWorkingHoursTimeOut = sDataReaderDaysDetailsTwo.Item("TotalWorkingHoursTimeOut")
        While TotalWorkingHoursTimeIn < TotalWorkingHoursTimeOut
            TotalWorkingHours = TotalWorkingHours + 1
            TotalWorkingHoursTimeIn = TotalWorkingHoursTimeIn + 1
        End While
    Next


    '------------BINDS DGV TO THE EXISTING DATA------------'
    DGVViewDaysDetailsForm.DataSource = DaysDetailsbindingsource

    '------------CREATES DATA GRID VIEW TEXBOX COLUMN AND ADDS IT TO DATA GRID VIEW------------'
    Dim TotalWorkHoursextraColumn As New DataGridViewTextBoxColumn
    With TotalWorkHoursextraColumn
        .Name = "TotalWorkHoursPerDay"
        .HeaderText = "Total Work Hours"
        .ReadOnly = True
    End With
    DGVViewDaysDetailsForm.Columns.Add(TotalWorkHoursextraColumn)


    '------------LOOP DGV TO CALCULATE TOTAL HOURS PER ROW------------'
    For Each row As DataGridViewRow In DGVViewDaysDetailsForm.Rows
        row.Cells("TotalWorkHoursPerDay").Value = CInt(TotalWorkingHours)
    Next

    '------------CLOSE CONNECTION------------'
    connectionDaysDetailsTwo.Close()



    '------------CLOSE CONNECTION------------'
    connectionDaysDetails.Close()
    '------------DATA BINDINGS------------'
    DGVViewDaysDetailsForm.DataSource = DaysDetailsbindingsource
    BNViewDaysDetailsForm.BindingSource = DaysDetailsbindingsource


    '------------DATA GRID VIEW SELECTION------------'
    DGVViewDaysDetailsForm.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    DGVViewDaysDetailsForm.MultiSelect = False



End Sub

这是上面代码的图像输出:

ImageOutput

如您所见,工作时间列没问题,因为它来自绑定(bind)列。但是看看名为“总工作时间”的未绑定(bind)列(我只是将其命名为“总工作时间”。因为我真正需要的是每行上的时间分割。),结果是相同的。全部 15 个,因为当我在 foreach 语句中包含此代码时,我无法正确执行我的代码。

 '------------LOOP DGV TO CALCULATE TOTAL HOURS PER ROW------------'
For Each row As DataGridViewRow In DGVViewDaysDetailsForm.Rows
    row.Cells("TotalWorkHoursPerDay").Value = CInt(TotalWorkingHours)
Next

有什么方法可以在我的 DGVViewDaysDetailsForm 中关联 row.Cells("TotalWorkHoursPerDay").Value = CInt(TotalWorkingHours) 吗?

因为每次我删除 foreach 并只保留 row.Cells("TotalWorkHoursPerDay").Value = CInt(TotalWorkingHours)

我收到如下错误代码: 找不到参数列名称 无法添加行,因为 datagridview 已绑定(bind) 该列不存在

最佳答案

Private Sub dgv_CellValidating(sender As Object, e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles dgv.CellValidating    

if e.RowIndex > -1 then
Dim dteValue1 as Date = DateTime.Parse(dgv.item("TotalWorkingHoursTimeIn", e.RowIndex).Value)
Dim dteValue2 as Date = DateTime.Parse(dgv.item("TotalWorkingHoursTimeOut", e.RowIndex).Value)
 dgv.Rows("TotalWorkHoursPerDay", e.RowIndex).Value = DateDiff(DateInterval.Hour, dteValue1, dteValue2).ToString()
End if

在单元格验证事件中尝试上述代码。希望这有效

关于mysql - 如何在不使用 For Each 的情况下将单元格数据添加到具有绑定(bind)列的未绑定(bind)列? - VB网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38760649/

相关文章:

MySQL 查找不在其他表中的行

mysql - ADO 记录集不返回任何内容

.net - 将图像添加到 .net datagridview 的 header

c# - 如何在数据绑定(bind)期间在datagridview中自定义格式数据

vb.net - DataGridView 列顺序似乎不起作用

mysql - 谁对给定文本的推文最多?

php - 将数据库表中的值保存在 php 变量中

mysql - 如何在一列中选择两个条件

.net - 被 VS2012 吞咽异常的噩梦难倒

c# - 如何以编程方式更改屏幕分辨率