作为序言,我浏览了几篇包含列表视图的帖子,没有什么能与我正在尝试做的事情相比。
我正在尝试通过具有多个 If 语句的循环确定值,类似于以下内容:
If Convert.ToInt32(GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_DAYS", DefaultValue)) > 0 Or _
Convert.ToInt32(GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_HRS", DefaultValue)) > 0 Or _
Convert.ToInt32(GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_MINS", DefaultValue)) > 0 Then
msChargeDays = GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_DAYS", DefaultValue)
msChargeHours = GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_HRS", DefaultValue)
msChargeMins = GetData(ds.Tables("HRIS").Rows(i), "ABS_CO_RULE_MINS", DefaultValue)
msHowPaid = "CR DAYS"
AbsenceLine() 'calls sub
End If
此代码块从它调用的数据集中返回有效结果。现在在下面的代码块中,我试图吸收由主代码块确定的值,主代码块大约有 40 个 if 语句,其结构与上面的块相似,都包含在 For 循环中。
在下面的代码块中,我试图将 ListViewItem 类型的对象插入到 ListView 中。这是我得到我的错误的地方,它后面的注释字符串表示。填充ListViewItem的函数在底部,所有返回的变量都是类变量,并且返回有效值给ListViewItem。我已经通过调试器仔细检查了这一点。
Private Sub AbsenceLine()
Dim sTypeReason As String
If msType = "" Then
sTypeReason = Left(msReason, 25)
Else
sTypeReason = msType & "--" & msReason
End If
Dim item As ListViewItem
item = New ListViewItem(ListViewItemType.DataItem)
item.DataItem = FillListView(sTypeReason)
absence_lv.Items.Add(item) 'this line here is what is givine me issues
End Sub
Private Function FillListView(typeReason As String) As IEnumerable(Of String)
Return {msDate, msVoid, msCont, msDays, msHours, msMinutes, typeReason, msChargeDays, msChargeHours,
msChargeMins, msHowPaid} 'all values returned are of String type
End Function
现在有了背景:
我是否完全偏离了我正在尝试做的事情?
有没有更简单的方法来代替gridview?