微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

aap.net c# 中的出勤月或 gridview 中的 vb

如何解决aap.net c# 中的出勤月或 gridview 中的 vb

我想以以下格式从数据库获取数据到 grieview。

我在数据库中有这样的数据

Empcode   Date           Status
123.      01-01-2021.    P
123.      02-01-2021.    P
123.      03-01-2021.    P
.         .
.         .
123.      31-01-2021.    P

我想要这样的数据

Dates    1 2 3 4 5 6 7 8 9 10 .....31
Empcode  p p p a a p p a p p .......p

你能帮帮我吗 提前致谢。

解决方法

好的,这并不需要太多代码。诀窍是减少格式和标记。

所以,将一个网格控件放到一个表单中,像这样说:

    <div style="width:60%;margin-top:10px;margin-left:10px">

        <asp:GridView ID="GridView1" runat="server" CssClass="table table-hover"></asp:GridView>

    </div>

所以,现在,在页面加载时,我们有以下代码:

Public MyTable As New DataTable
Public dtStart,dtEnd As Date
Public DaysInMonth As Integer

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        CreateTable()
        LoadGrid()
    End If

End Sub

注意我是如何在表单(类)级别创建开始/结束变量的 - 以后可能需要这些!!!

所以,我们的创建表代码是这样的: (一个月,但第一列是 EmpID

Sub CreateTable()

    Dim dt As Date = Date.Today

    DaysInMonth = Date.DaysInMonth(Year(dt),Month(dt))
    dtStart = DateSerial(Year(dt),Month(dt),1)
    dtEnd = DateAdd(DateInterval.Day,DaysInMonth - 1,dtStart)

    MyTable.Columns.Add("EmpID",GetType(Integer))
    For I = 1 To DaysInMonth
        MyTable.Columns.Add(I.ToString,GetType(String))
        MyTable.Columns(I.ToString).DefaultValue = "a"
    Next

End Sub

我们也在上面确实将默认值设置为“a”(不存在),因为当然当月的任何非数据都应该是“a”。

所以,现在我们要做的就是将查询拉入一个表中,然后将其发送到上表中。

该代码是这样的:

Sub LoadGrid()

    Dim strSQL As String = "SELECT EmpID,ADate from tblAttend " &
                           "WHERE Adate  between @dtStart AND @dtEnd " &
                           "ORDER BY EmpID,ADate "

    Using cmdSQL As New SqlCommand(strSQL,New SqlConnection(My.Settings.TEST4))

        cmdSQL.Connection.Open()
        cmdSQL.Parameters.Add("@dtStart",SqlDbType.Date).Value = dtStart
        cmdSQL.Parameters.Add("@dtEnd",SqlDbType.Date).Value = dtEnd

        Dim rstEdata As New DataTable
        rstEdata.Load(cmdSQL.ExecuteReader)

        ' now send data to our grid table
        Dim dPtr As Integer     ' day pointer
        Dim EmpID As Integer = 0
        Dim newRow As DataRow = Nothing

        For Each OneRow As DataRow In rstEdata.Rows
            If OneRow("EmpID") <> EmpID Then
                ' start of new employee
                If EmpID <> 0 Then
                    MyTable.Rows.Add(newRow)   ' add existing working row
                End If
                newRow = MyTable.NewRow     ' start a new row
                EmpID = OneRow("EmpID")
                newRow("EmpID") = EmpID
            End If

            dPtr = Day(OneRow("ADate"))
            newRow(dPtr) = "P"
        Next
        ' send last row
        MyTable.Rows.Add(newRow)

        ' send our data to the grid
        GridView1.DataSource = MyTable
        GridView1.DataBind()

    End Using

End Sub

现在上面是一些代码 - 但不是那么多。

假设这个数据表:

enter image description here

现在我们的输出是这样的:

enter image description here

所以,在无标记旁边。

关键概念是创建一个数据表,然后将数据处理到该表中,然后非常容易显示 - 我们只需将表绑定/发送到 gridview。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。