VB
我有一个网格视图,我需要在其中使用模板列,因此它不能直接从单元格中检索文本,而是在标签内。所有标签也有不同的ID,所以我想以编程方式检索单元格内的标签,然后查看标签内的文本。
这就是我目前得到的,但是它从未设法返回文本,而是返回空字符串 ("(。
Public Function ReturnLabelText(ByVal c As TableCell) As String
For Each lb In c.Controls
If lb.[GetType]() = GetType(Label) Then
Return CType(lb, Label).Text()
End If
Next
Return ""
End Function
该函数在此行调用:
doc.ReplaceText("@" + gridView.HeaderRow.Cells(i).Text.ToLower, ReturnLabelText(row.Cells(i)).Replace(" ", "").Replace(vbCr, ""))
您必须使用 GridViewRow.FindControl("ControlID")
来获取Label
的引用。
例如,如果要循环循环所有行:
For Each row As GridViewRow In Me.GridView1.Rows
Dim label = DirectCast(row.FindControl("LabelID"), Label)
Dim text As String = label.Text
' ... '
Next
但是如果你想在数据绑定上设置它的文本,我会改用 GridView.RowDataBound
事件:
Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
Select Case e.Row.RowType
Case DataControlRowType.DataRow
Dim label = DirectCast(e.Row.FindControl("LabelID"), Label)
Dim text As String = label.Text
' ... '
End Select
End Sub
您甚至可以通过e.Row.DataItem
获取每行的DataSource
以访问所有字段。
如果你有一个TableCell
,并且你想获取其中的所有标签,你也可以使用OfType
:
Dim firstLabel = c.Controls.OfType(Of Label)().FirstOrDefault()
If firstLabel IsNot Nothing Then Return firstLabel.Text
Return Nothing