【问题标题】:ASP Gridview MaxLengthASP Gridview 最大长度
【发布时间】:2013-01-29 20:10:10
【问题描述】:

我有一个使用<asp:BoundField DataField="Comments" HeaderText="COMMENTS" /> 的网格视图,我想在填充网格视图时只显示 Commemnt 列中的前 20 个字符。有没有办法在VB中完成这个?谢谢。

【问题讨论】:

    标签: asp.net vb.net gridview boundfield


    【解决方案1】:

    一种方法是在代码隐藏中使用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>
    

    【讨论】:

    • 评论栏在第7栏。
    • @g_shockTan:由于GridViewRow.Cells 返回带有(从零开始的)索引器的TableCellCollection,因此您可以通过e.Row.Cells(6) 获得正确的TableCell。
    • 我收到以下错误:索引和长度必须引用字符串中的位置。参数名称:长度。即使我将其更改为正确的列号。
    • @g_shockTan:你有没有使用我上面的代码和If 子句?
    • 谢谢。那很奇怪。我以为我复制并粘贴了所有内容,包括 If 语句,但它丢失了。它现在可以工作,但想在最后添加一个.....以显示更多可用的 cmets。
    猜你喜欢
    • 2012-02-13
    • 2015-07-18
    • 2010-09-15
    • 2014-10-03
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多