请问怎么控制datagrid控件中链接列的文本字符长度呢?
datagrid控件中使用绑定列,之后用以下语句控制文本的长度,但是如果要用链接列呢,应该怎样做呢?先谢谢各位了
private void NewsDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.DataSetIndex != -1)//出去DataGrid的Header
{
string ttt = e.Item.Cells[0].Text.ToString();
int length = e.Item.Cells[0].Text.Length;//获取所需单元格的字符长度
if(length > 29)
{
e.Item.Cells[0].Text = e.Item.Cells[0].Text.Substring(0,28)+"...";//重设单元格内的内容
}
}
}
问题点数:20、回复次数:6Top
1 楼NeilChen123(木野狐)回复于 2006-03-13 16:25:34 得分 20
你用 e.Item.Cells[0].Controls[x] as LinkButton
得到超级链接。
然后对他的 Text 属性做同样操作即可。
上面表达式里面的 x 是其中 LinkButton 所在的索引,自己替换一下。
如果不确定索引,那么你可以改用模版列,指定 LinkButton 的 ID, 配合 FindControl 方法。
Top
2 楼BenHsy(Ben)回复于 2006-03-13 16:33:38 得分 0
能麻烦你写清楚点吗,最好给个例子看看,谢谢Top
3 楼NeilChen123(木野狐)回复于 2006-03-13 18:10:11 得分 0
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="csdn1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body >
<form id="Form1" method="post" runat="server"><font face=宋体><asp:DataGrid id=DataGrid1 runat="server" AutoGenerateColumns="False">
<columns>
<asp:HyperLinkColumn DataTextField="FirstName" NavigateUrl="test.htm"></asp:HyperLinkColumn>
</Columns></asp:DataGrid></font>
</form>
</body>
</html>
Top
4 楼NeilChen123(木野狐)回复于 2006-03-13 18:10:30 得分 0
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace csdn1
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
SqlConnection conn = new SqlConnection("server=.;database=northwind;uid=sa;pwd=;");
DataTable table = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter("select FirstName from employees", conn);
adapter.Fill(table);
this.DataGrid1.DataSource = table;
this.DataGrid1.DataBind();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
HyperLink btn = e.Item.Cells[0].Controls[0] as HyperLink;
if (btn != null)
{
btn.Text += "_加一个尾巴试试";
}
}
}
}
}
Top
5 楼NeilChen123(木野狐)回复于 2006-03-13 18:11:31 得分 0
另外,你判断一个行的类型,用 if (e.Item.DataSetIndex != -1) 这样写是不好的。
看我代码里那一段用 ListItemType 来判定。
Top
6 楼BenHsy(Ben)回复于 2006-03-13 22:35:50 得分 0
非常感谢!Top




