首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridView中空行后的重设/加号

DataGridView中空行后的重设/加号
EN

Stack Overflow用户
提问于 2019-09-02 10:15:04
回答 1查看 52关注 0票数 0

我是Vb.net的初学者,所以请相信我的知识:)我正在开发的winform应用程序的格式来自于Excel,用户每天都要输入以下内容:

无件Qty型管分级共计

1- ABC123 - 10.4 -1

2- ABC456 - 10.3 -1

3\x{e76f} ABC789 \\x{e76f}\x{e76f}\x{e76f} 30.8

(空白行)

1\x{e76f} ABC012 \x{e76f} 10.9 \x{e76f}2

2- ABC234 - 10.2 -2-2

3- ABC765 - 10.4 -2

4\x{e76f} ABC876 \x{e76f} 10.8 \x{e76f}2\x{e76f} 42.3

(空白行)

1- ABC567 - 10.6 -2-3

总计: 83.7

在excel中,有如下公式:

  • 空行后的重置编号
  • 空行后增加1管数

编号和管ID都是自动填充的。

数据由用户输入。用户会故意跳过一行(空白)放进“片”,“管”会自动增加1。同时,“小计”也会自动计算。

老实说,我什么也没试过,因为我对从哪里开始毫无头绪!这绝对不是使用Datagridview >_<输入数据的常用方式。

我的问题是,这与Datagridview是可行的吗?用户可以用这种方式使用空行和小计进行输入吗?若否,是否有其他选择?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 01:40:43

这只是一个示例(没有验证输入),您必须有一个DataGridView (myDGV),它有五个列(No、five、Qty、Tube和SubTotal)、2个文本框(txtPiece、txtQty)和2个按钮(btnAdd,btnSkip):

代码语言:javascript
复制
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
    myDGV.AllowUserToAddRows = False
End Sub

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
    Dim myNextNo As Integer = 0
    Dim myNextTube As Integer = 0
    If myDGV.RowCount = 0 Then
        myDGV.Rows.Add(1, txtPiece.Text, txtQty.Text, 1, "")
    Else
        Dim myCnt As Integer = myDGV.RowCount
        If myDGV.Item(0, myCnt - 1).Value Is "" Then
            myNextNo = 1
            myNextTube = Integer.Parse(myDGV.Item(3, myCnt - 2).Value.ToString) + 1
        Else
            myNextNo = Integer.Parse(myDGV.Item(0, myCnt - 1).Value.ToString) + 1
            myNextTube = Integer.Parse(myDGV.Item(3, myCnt - 1).Value.ToString)
        End If
        myDGV.Rows.Add(myNextNo, txtPiece.Text, txtQty.Text, myNextTube, "")
    End If
End Sub

Private Sub btnSkip_Click(sender As Object, e As EventArgs) Handles btnSkip.Click
    If myDGV.RowCount = 0 Then
        MessageBox.Show("Can't skip, No Data")
        Exit Sub
    End If
    If myDGV.Item(0, myDGV.RowCount - 1).Value Is "" Then
        MessageBox.Show("Can't More skip, No Data")
        Exit Sub
    End If
    Dim mySub As Long = 0
    For myCnt As Integer = myDGV.RowCount To 1 Step -1
        If myDGV.Item(0, myCnt - 1).Value Is "" Then
            Exit For
        End If
        mySub += Long.Parse(myDGV.Item(2, myCnt - 1).Value.ToString)
    Next
    myDGV.Item(4, myDGV.RowCount - 1).Value = mySub
    myDGV.Rows.Add("", "", "", "", "")

End Sub

如果您想获得总计,可以将btnSkip_Click过程更改如下:

代码语言:javascript
复制
Private Sub btnSkip_Click(sender As Object, e As EventArgs) Handles btnSkip.Click
    If myDGV.RowCount = 0 Then
        MessageBox.Show("Can't skip, No Data")
        Exit Sub
    End If
    If myDGV.Item(0, myDGV.RowCount - 1).Value Is "" Then
        MessageBox.Show("Can't More skip, No Data")
        Exit Sub
    End If
    Dim mySub As Long = 0
    Dim myGrand As Long = 0
    Dim myStts As Boolean = False
    For myCnt As Integer = myDGV.RowCount To 1 Step -1
        If myDGV.Item(0, myCnt - 1).Value Is "" Then
            myStts = True
        End If
        Dim mySubTtl As Long = 0
        If myStts = False Then mySub += Long.Parse(myDGV.Item(2, myCnt - 1).Value.ToString)
        Long.TryParse(myDGV.Item(2, myCnt - 1).Value.ToString, mySubTtl)
        myGrand += mySubTtl
    Next
    myDGV.Item(4, myDGV.RowCount - 1).Value = mySub
    If myDGV.ColumnCount = 6 Then myDGV.Columns.Remove(myDGV.Columns(5))
    myDGV.Columns.Add("GrandTotal", "Grand Total")
    myDGV.Item(5, myDGV.RowCount - 1).Value = myGrand
    myDGV.Rows.Add("", "", "", "", "")

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57755169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档