在asp.net中的rpt_RowDataBound sub中检索datatable.column值

在asp.net中的rpt_RowDataBound sub中检索datatable.column值,asp.net,vb.net,visual-studio-2008,repeater,Asp.net,Vb.net,Visual Studio 2008,Repeater,根据这篇文章中选择的答案,我有一个修改要处理 在rpt_RowDataBound子文件中,我需要使用数据库值(“statusupdate”),而不是使用FileInfo对象 代码隐藏: Protected Sub rpt_RowDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType =

根据这篇文章中选择的答案,我有一个修改要处理

在rpt_RowDataBound子文件中,我需要使用数据库值(“statusupdate”),而不是使用FileInfo对象

代码隐藏:

Protected Sub rpt_RowDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        If month <> TryCast(e.Item.DataItem, FileInfo).CreationTime.Month OrElse year <> TryCast(e.Item.DataItem, FileInfo).CreationTime.Year Then
            month = TryCast(e.Item.DataItem, FileInfo).CreationTime.Month
            year = TryCast(e.Item.DataItem, FileInfo).CreationTime.Year
            e.Item.FindControl("headerTable").Visible = True
            TryCast(e.Item.FindControl("headerTitle"), Label).Text = MonthName(TryCast(e.Item.DataItem, FileInfo).CreationTime.Month()) & " " & TryCast(e.Item.DataItem, FileInfo).CreationTime.Year()
        Else
            e.Item.FindControl("headerTable").Visible = False
        End If
    End If
End Sub

更新

实际上,再看一遍,我认为需要将
FileInfo
替换为
DateTime
,再次假设数据库中的“statusupdate”是DateTime列。换言之:

Protected Sub rpt_RowDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)  

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then                      
        If month <> TryCast(e.Item.DataItem, DateTime).Month OrElse year <> TryCast(e.Item.DataItem, DateTime).Year Then                          
            month = TryCast(e.Item.DataItem, DateTime).Month
            year = TryCast(e.Item.DataItem, DateTime).Year
            e.Item.FindControl("headerTable").Visible = True                         
            TryCast(e.Item.FindControl("headerTitle"), Label).Text = MonthName(TryCast(e.Item.DataItem, DateTime).Month) & " " & TryCast(e.Item.DataItem, DateTime).Year
        Else                          
            e.Item.FindControl("headerTable").Visible = False                      
        End If                  
    End If              
End Sub              
Protected Sub rpt_RowDataBound(ByVal发送方作为对象,ByVal e作为RepeaterItemEventArgs)
如果e.Item.ItemType=ListItemType.Item或LSE e.Item.ItemType=ListItemType.AlternatingItem,则
如果月份TryCast(e.Item.DataItem,DateTime).month或lse year TryCast(e.Item.DataItem,DateTime).year则
月=TryCast(e.Item.DataItem,DateTime).month
年份=TryCast(e.Item.DataItem,DateTime)。年份
e、 Item.FindControl(“headerTable”).Visible=True
TryCast(e.Item.FindControl(“headerTitle”),Label.Text=MonthName(TryCast(e.Item.DataItem,DateTime).Month)&“&TryCast(e.Item.DataItem,DateTime).Year
其他的
e、 Item.FindControl(“headerTable”).Visible=False
如果结束
如果结束
端接头
您使用的示例是
FileInfo
对象,而您使用的(看起来)是
DateTime
对象。因此,您只需将
FileInfo
替换为
DateTime

试试以下方法:

Protected Sub rpt_RowDataBound(sender As Object, e As RepeaterItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then

        If month <> DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Month OrElse year <> DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Year Then
            month = DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Month
            year = DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Year
            e.Item.FindControl("headerTable").Visible = True
            TryCast(e.Item.FindControl("headerTitle"), Label).Text = "Files for " & DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).ToShortDateString()
        Else
            e.Item.FindControl("headerTable").Visible = False
        End If
    End If
End Sub
受保护的子rpt\u行数据绑定(发送方作为对象,e作为RepeaterItemEventArgs)
如果e.Item.ItemType=ListItemType.Item或LSE e.Item.ItemType=ListItemType.AlternatingItem,则
如果month DateTime.Parse(TryCast(e.Item.DataItem,DataRowView)(“statusupdate”).ToString()).month或lse year DateTime.Parse(TryCast(e.Item.DataItem,DataRowView)(“statusupdate”).ToString()).year然后
month=DateTime.Parse(TryCast(例如Item.DataItem,DataRowView)(“statusupdate”).ToString()).month
year=DateTime.Parse(TryCast(例如Item.DataItem,DataRowView)(“statusupdate”).ToString()).year
e、 Item.FindControl(“headerTable”).Visible=True
TryCast(e.Item.FindControl(“headerTitle”),Label).Text=“Files for”&DateTime.Parse(TryCast(e.Item.DataItem,DataRowView)(“statusupdate”).ToString()).ToSortDateString()
其他的
e、 Item.FindControl(“headerTable”).Visible=False
如果结束
如果结束
端接头

您能更新您的问题并发布更多相关代码吗?datarow(“statusupdate”)在哪里?也就是说,你从哪里得到的?我在更新的代码中没有看到它。数据行(statusupdate)将在页面加载事件中检索。上面的代码是我目前所拥有的全部。@DotNetCookie-我更新了我的代码示例(我原来的答案不正确)。看一看,看这是否使您朝着正确的方向前进。这是一个错误:“TryCast”操作数必须是引用类型,但“Date”是值类型。
        Dim dt As DataTable = New DataTable()
        Dim da As SqlDataAdapter = New SqlDataAdapter(strSQL, myConnection)
        da.Fill(dt)
        rpt.DataSource = dt
        rpt.DataBind()
Protected Sub rpt_RowDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)  

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then                      
        If month <> TryCast(e.Item.DataItem, DateTime).Month OrElse year <> TryCast(e.Item.DataItem, DateTime).Year Then                          
            month = TryCast(e.Item.DataItem, DateTime).Month
            year = TryCast(e.Item.DataItem, DateTime).Year
            e.Item.FindControl("headerTable").Visible = True                         
            TryCast(e.Item.FindControl("headerTitle"), Label).Text = MonthName(TryCast(e.Item.DataItem, DateTime).Month) & " " & TryCast(e.Item.DataItem, DateTime).Year
        Else                          
            e.Item.FindControl("headerTable").Visible = False                      
        End If                  
    End If              
End Sub              
Protected Sub rpt_RowDataBound(sender As Object, e As RepeaterItemEventArgs)

    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then

        If month <> DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Month OrElse year <> DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Year Then
            month = DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Month
            year = DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).Year
            e.Item.FindControl("headerTable").Visible = True
            TryCast(e.Item.FindControl("headerTitle"), Label).Text = "Files for " & DateTime.Parse(TryCast(e.Item.DataItem, DataRowView)("statusupdate").ToString()).ToShortDateString()
        Else
            e.Item.FindControl("headerTable").Visible = False
        End If
    End If
End Sub