【问题标题】:Binding Derived DataTable to SQL-made DataTable to Fill Datagrid将派生的 DataTable 绑定到 SQL 制作的 DataTable 以填充 Datagrid
【发布时间】:2011-10-02 05:56:32
【问题描述】:

我不知所措,到处搜索以找出如何以我理解的方式执行此操作,但仍然没有运气。我试图显示客户有空闲的时间以及每天安排的时间。他们的日程安排保存在服务器上并显示他们的忙碌时间。我使用 sql 查询提取该数据并将其放入名为 dtSched 的数据表中。然后,我创建了另一个名为 dtTime 的数据表,以 15 分钟的增量列出从上午 6:00 到晚上 10:00 的时间。我现在要做的是结合两个数据表以显示 dtTime 中列出的所有时间并显示客户安排时间的位置,以便我可以显示空行以允许添加约会并显示预定时间,以便不添加约会时间段。

这是我创建 dtTime 表的代码(所有时间):

    Dim strStartDate As DateTime
    Dim strEndDate As DateTime

    strStartDate = DateValue(Now()) & " 6:00 AM"
    strEndDate = DateValue(Now()) & " 10:00 PM"

    While strStartDate <= strEndDate
        strStartDate = strStartDate.AddMinutes(15)
        Dim dr As System.Data.DataRow = dt.NewRow()
        dr("Time") = strStartDate
        dt.Rows.Add(dr)
    End While

这是我的 sql 派生数据表 dtSched(预定时间):

Dim conn = New SqlConnection("Connection")
Dim strSQL As String

strSQL = "SELECT * FROM MYTABLE WHERE SCHED DATE = 'Date'"
Me.dataAdapter = New SqlDataAdapter(strSQL, conn)
Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)
Dim dtSched As New DataTable()
dtSched.Locale = System.Globalization.CultureInfo.InvariantCulture
Me.dataAdapter.Fill(dtSched)

我试图使用 GetData 执行来绑定两个数据表,但它不起作用:

Me.dataGrid.DataSource = Me.BindingSource1
    GetData("SELECT dt.Time, dtSched.Date, dtSched.ID, dtSched.Client, dtSched.StartTime, dtSched.Reason FROM dt LEFT JOIN dtSched ON dt.Time = dtSched.StartTime")

我正在尝试通过 dt.Time 和 dtSched.StartTime 连接两个数据表。然后填充数据网格。任何人都可以提供的任何帮助都非常棒!

谢谢!

【问题讨论】:

    标签: datagrid time hyperlink datatable range


    【解决方案1】:

    没关系,我想通了!是的!

    万一有人遇到同样的问题,我拿了两个数据表并使用以下代码进行了合并:

            Dim pk1(0) As DataColumn
            Dim pk2(0) As DataColumn
    
            pk1(0) = dtTime.Columns("Time")
            dtTime.PrimaryKey = pk1
    
            pk2(0) = dtSched.Columns("Time")
            dtSched.PrimaryKey = pk2
            dtTime.Merge(tblSched, False, MissingSchemaAction.Ignore)
    
            Me.BindingSource1.DataSource = dtTime
    

    我将列名添加到合并之前位于 dtSched 表中的 dtTime 表中,然后将 dtTime 添加到我的数据网格中,这是一个包装!我还在组合中添加了第三个数据表,它就像手套一样工作。真是一种解脱!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2018-02-07
      • 2023-04-06
      • 2011-10-12
      • 2014-01-13
      • 2015-12-14
      • 2012-11-22
      相关资源
      最近更新 更多