【发布时间】:2013-01-29 20:10:10
【问题描述】:
我有一个使用<asp:BoundField DataField="Comments" HeaderText="COMMENTS" /> 的网格视图,我想在填充网格视图时只显示 Commemnt 列中的前 20 个字符。有没有办法在VB中完成这个?谢谢。
【问题讨论】:
标签: asp.net vb.net gridview boundfield
我有一个使用<asp:BoundField DataField="Comments" HeaderText="COMMENTS" /> 的网格视图,我想在填充网格视图时只显示 Commemnt 列中的前 20 个字符。有没有办法在VB中完成这个?谢谢。
【问题讨论】:
标签: asp.net vb.net gridview boundfield
一种方法是在代码隐藏中使用RowDataBound 事件:
Protected Sub Gridview1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles Gridview1.RowDataBound
Select Case e.Row.RowType
Case DataControlRowType.DataRow
' assuming the comments column is the first column '
If e.Row.Cells(0).Text.Length > 20 Then
e.Row.Cells(0).Text = e.Row.Cells(0).Text.Substring(0, 20)
End If
End Select
End Sub
请注意,您只能使用BoundFields 以这种方式访问文本。使用TemplateFields,您需要使用FindControl 来获取控件的引用(例如TextBox)。
如果您使用 TemplateField,您还可以限制 aspx 标记上的文本:
<asp:TemplateField HeaderText="Commnents">
<ItemTemplate>
<asp:TextBox ID="txtID"
MaxLength="20" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Comments") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
【讨论】:
GridViewRow.Cells 返回带有(从零开始的)索引器的TableCellCollection,因此您可以通过e.Row.Cells(6) 获得正确的TableCell。
If 子句?