在我的应用程序中,我有一个gridview,gridview的一列中有一个超链接字段。 超链接字段包含少量或多个单词的文本。我想限制该列中显示的字符数。
例如: 如果文字提示超链接说:“大家好,我今天有一个问题”
我希望gridview专栏的结果是:“大家好,我有......”
当用户点击整个消息时,他们将重定向到显示整个消息的页面。
我的Gridview看起来像这样:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="SerialNumber"
OnRowDataBound="GridView1_RowDataBound"
Width="100%"
ShowFooter="false"
CellPadding="3"
CellSpacing="0"
EnableViewState="false"
AllowPaging="true"
PageSize="28"
AutoPostBack="true">
<Columns>
<asp:BoundField DataField="SrNumber" HeaderText="SrNumber" SortExpression="SrNumber" />
<asp:BoundField DataField="DateAdded" HeaderText="Created on" SortExpression="DateAdded" />
<asp:HyperLinkField DataNavigateUrlFields="SSrNumber" DataNavigateUrlFormatString="showdetail.aspx?SrNumber={0}" DataTextField="text_Det" HeaderText="text_Det" />
<asp:BoundField DataField="DateModified" HeaderText="Last Modified" SortExpression="DateModified" />
<asp:BoundField DataField="CreatedBy" HeaderText="CreatedBy" SortExpression="CreatedBy" />
</Columns>
</asp:GridView>
我的Gridview1_RowDataBound看起来像:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex < 0)
return;
int _myColumnIndex = 2; // Substitute your value here
string text = e.Row.Cells[_myColumnIndex].Text;
if (text.Length > 10)
{
e.Row.Cells[_myColumnIndex].Text = text.Substring(0, 10);
}
}
问题是:代码在除了hyperlinkfield之外的所有其他列上都正常工作。对于Hyperlinkfiled,它没有获取任何数据。字符串文本将变为null。请帮助!
谢谢。答案 0 :(得分:0)
我相信您的问题是您实际上并没有使用string text = e.Row.Cells[_myColumnIndex].Text;
语法访问超链接对象本身。
请改为尝试:
HyperLink myLink = (HyperLink)e.Row.Cells[2].Controls[0];
string text = myLink.Text;
if (text.Length > 10)
{
myLink.Text = text.Substring(0, 10);
}