将过长的新闻标题或者其他标题用...(省略号)代替

本文介绍了一种在ASPX页面中处理新闻标题过长问题的方法,通过在数据层面修改DataSet对象来实现标题的智能截断,避免了页面回发时的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在解决这个问题的时候我也参考一些其他的例子,但是由于一些原因终究是没有得到我想要的结果,经过反复测试,终于想到一个自认为是终极版本的,要是大家还有更好的办法的,还望赐教。

我做的这个是在ASPX页面中将新闻标题过长的一段截取掉,换成...来代替,之前见过一个办法是先将数据绑定到GridView中,然后再遍历GridView中的每一行的数据进行截断,这个办法适合与该标题不是超级链接的时候,一旦做成超级链接的话,页面一经回发就暴露出问题来了,被截断的一部分又给加载上来了。所以我的办法是在数据从数据库中读取出来的以后就重写一下DataSet对象中的那个Table,在重写的时候就将字符串截断,这样的话,绑定到GridView上的时候就已经是被处理好了数据了,而不是先绑定再截断了。

具体的重写代码:

 

/*将过长的标题截断加上省略号*/
    private void TruncatedString(string tableName, int how,DataSet ds)
    {
/*参数tableName是你查询的那张表名,how是你要保留的字符串长度,根据需要更改,ds是你传进来的DataSet对象,即你想把哪个DataSet重写一下,那你就把哪个DataSet对象传进来即可。*/
       //实例化一个Table
        DataTable table = new DataTable();

        //声明一列一行
        DataColumn column;
        DataRow row;

        /*创建列、制定列的数据类型、字段名*/
/*需要注意的是,新创建的列要和你查询出来的那个表的结构一致,这样在替换表的时候才不会出现异常*/
          column = new DataColumn();
        column.DataType = System.Type.GetType("System.String");
        column.ColumnName = "_title";
        table.Columns.Add(column);

        //创建列、制定列的数据类型、字段名
        column = new DataColumn();
        column.DataType = Type.GetType("System.String");
        column.ColumnName = "_url";
        table.Columns.Add(column);

        //用循环将查询出来的表写入到新创建的表中
        int j = ds.Tables[tableName].Rows.Count;
        for (int h = 0; h < j; h++)
        {
            row = table.NewRow();
//取到查询出来的表中的数据写入到自己创建的表结构中
            row["_url"] = ds.Tables[tableName].Rows[h].ItemArray[1].ToString();
            string str = ds.Tables[tableName].Rows[h].ItemArray[0].ToString();
//判断,如果字符串的长度够上了保留的长度则进行截取
            if (str.Length > how)
            {
                row["_title"] = str.Substring(0, how) + "...";
            }
//否则不做任何操作,直接写入新的表中
            else
            {
                row["_title"] = str;
            }
            table.Rows.Add(row);
        }
        table.TableName = tableName;
        ds.Tables.Remove(tableName);
        ds.Tables.Add(table);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值