gridview 实现字符串的截断 长的用...表示
2009-07-27 12:53
330 查看
前台代码:
<asp:GridView ID="gvbszn" runat="server" Width="100%" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" ShowHeader="False">
<Columns>
<asp:TemplateField FooterStyle-Width=5%>
<ItemTemplate>
<asp:Image ID="a" ImageUrl="~/jianlizhongxin/images/dot.gif" runat='server' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="标题">
<ItemTemplate>
<asp:LinkButton ID="lbt" runat="server" CommandName="name" Text= '<%#CutString(DataBinder.Eval(Container.DataItem, "title").ToString())%>' ForeColor="red" Font-Underline="true" CommandArgument='<%# Container.DisplayIndex %>'></asp:LinkButton>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:BoundField DataField="publishDate" HeaderText="发布时间" HtmlEncode="False" DataFormatString="{0:yyyy-MM-dd}">
<HeaderStyle Width="10%" />
</asp:BoundField>
</Columns>
</asp:GridView>
后台:
public partial class banshizhinan_control_bazn_shouye : System.Web.UI.UserControl
{
DB db = new DB();
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt = db.SqlDataset("select top 7 * from bszn");
gvbszn.DataSource = dt.DefaultView;
gvbszn.DataBind();
}
}
//切割函数,防止标题过长时影响首页的排版
public static string CutString(string inputString)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
int len = 25;
string tempString = "";
byte[] s = ascii.GetBytes(inputString);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
try
{
tempString += inputString.Substring(i, 1);
}
catch
{
break;
}
if (tempLen > len)
break;
}
//如果截过则加上个省略号
byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
if (mybyte.Length > len)
tempString += "...";
return tempString;
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "name")
{
dt = db.SqlDataset("select top 7 * from bszn");
int index = Convert.ToInt32(e.CommandArgument.ToString());
string id = dt.Rows[index][0].ToString();
Response.Redirect("~/banshizhinan/bszn_show.aspx?id=" + id);
}
}
}
最关键的是截断函数: public static string CutString(string inputString)
和前台语句:
Text= '<%#CutString(DataBinder.Eval(Container.DataItem, "title").ToString())%>'
<asp:GridView ID="gvbszn" runat="server" Width="100%" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" ShowHeader="False">
<Columns>
<asp:TemplateField FooterStyle-Width=5%>
<ItemTemplate>
<asp:Image ID="a" ImageUrl="~/jianlizhongxin/images/dot.gif" runat='server' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="标题">
<ItemTemplate>
<asp:LinkButton ID="lbt" runat="server" CommandName="name" Text= '<%#CutString(DataBinder.Eval(Container.DataItem, "title").ToString())%>' ForeColor="red" Font-Underline="true" CommandArgument='<%# Container.DisplayIndex %>'></asp:LinkButton>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:BoundField DataField="publishDate" HeaderText="发布时间" HtmlEncode="False" DataFormatString="{0:yyyy-MM-dd}">
<HeaderStyle Width="10%" />
</asp:BoundField>
</Columns>
</asp:GridView>
后台:
public partial class banshizhinan_control_bazn_shouye : System.Web.UI.UserControl
{
DB db = new DB();
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt = db.SqlDataset("select top 7 * from bszn");
gvbszn.DataSource = dt.DefaultView;
gvbszn.DataBind();
}
}
//切割函数,防止标题过长时影响首页的排版
public static string CutString(string inputString)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
int len = 25;
string tempString = "";
byte[] s = ascii.GetBytes(inputString);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
try
{
tempString += inputString.Substring(i, 1);
}
catch
{
break;
}
if (tempLen > len)
break;
}
//如果截过则加上个省略号
byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
if (mybyte.Length > len)
tempString += "...";
return tempString;
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "name")
{
dt = db.SqlDataset("select top 7 * from bszn");
int index = Convert.ToInt32(e.CommandArgument.ToString());
string id = dt.Rows[index][0].ToString();
Response.Redirect("~/banshizhinan/bszn_show.aspx?id=" + id);
}
}
}
最关键的是截断函数: public static string CutString(string inputString)
和前台语句:
Text= '<%#CutString(DataBinder.Eval(Container.DataItem, "title").ToString())%>'
相关文章推荐
- 实现gridview中checkbox的全选和反选,以及固定gridview列字符串的长度,多余的以...表示
- 实现gridview 固定gridview列字符串的长度,多余的以...表示
- 用CSS截断字符串 实现文字自动截断隐藏溢出文本
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- GridView中如何实现自定义时间货币等字符串格式?
- GridView实现用“...”代替超长字符串
- java实现10进制转换为英文字符表示的26进制,得到唯一自增的英文字符串序列。
- css实现字符串截断并加省略号示例
- GridView实现用“...”代替超长字符串
- 模拟实现一个printf,函数可以实现my_printf("s ccc.","hello", 'n','i','h','a','o');//遇到s表示字符串
- jsp实现字符串截断函数
- GridView实现用“...”代替超长字符串
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
- javascript实现的字符串与十六进制表示字符串相互转换方法
- Nginx if语句加正则表达式实现字符串截断
- GridView控件实现自定义数字、时间、货币字符串格式
- javascript中,使用正则表达式实现'字符串截断翻页'
- 用 CSS 实现字符串截断
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- GridView实现用"..."代替超长字符串