Datagrid中有一超级链接列,绑定到数据库的新闻标是字段。如何控制它的长度在某个范围之内,比如18个字

解决方案 »

  1.   

    或者是你在写SQL语句的时候控制取出的新闻标题的长度比如: string strSelect = "select (substring(Title,a,b)) as Title from [News]";
    里面的 a 表示从第几个开始取,b 表示取多少个字符.
      

  2.   

    //返回字符串Str最左端的Lenth个字符串,如果有省略则加上“...”
    public static string LeftStr(string Str,int Length)
    {
    if (Str.Length>Length)
    return Str.Substring(0,Length)+"...";
    else
    return Str;
    }
      

  3.   

    建议改为模板列
    然后这样写:<a href="ss.aspx?id="<%#funName(DataBinder.Eval())%>在后台写:
    public string funName(object obj)
    {
    string s = obj.ToString();
    if(s.length > 18)
    {
       s = s.subString(0,18)+"...";
    }
    else
    {
      s = s.subString(0,s.Length)+"...";
    }
    return s;
    }
      

  4.   

    private string subString(string str,int length)
    {
    if(str.Length > length)
    return str = str.Substring(0,length) + "...";
    return str;
    }在绑定数据处加入<%# subString( DataBinder.Eval(Container.DataItem,"title").ToString(),18) %>,长度可自己控制
      

  5.   

    TO:RealPlayer10() 
    你说的将datagrid的列设置成固定宽度只是控制了列,但是如果新闻的标题很长,他还是会折成2行或更多行显示。我的意思只是想将标题取成要求的长度以适应datagrid的列宽。
      

  6.   

    TO:Lcindep110(Steven) 
    我用的Datagrid中的超级链接列。不是通过模板来实现的。所以我加不了DataBinder.Eval(Container.DataItem,"title")这句啊。如果用你那种方式(模板列来实现),我又不会加超级链接,因为新闻的标题要求点击弹出具体新闻内容页面。
      

  7.   

    或者在DataGrid的ItemDataBind事件里写代码去控制你那一列的显示内容:
    假设你那列位于第二列
    if (e.Item.ItemType == ListItemType.Item ||  e.Item.ItemType == ListItemType.AlternatingItem)
     {
        if(e.Item.Cells[1].Text.Length>18)
        {
          e.Item.Cells[1].Text=e.Item.Cells[1].Text.Substring(1,18); 
        }
     }
      

  8.   

    TO:zhangzs8896(小二)
    我试了一下,没有通过哈。
      

  9.   

    恩?不可能啊,编译不通过?
    把你的ItemDataBind代码贴出来看看
      

  10.   

    private void dgrdNews_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item ||  e.Item.ItemType == ListItemType.AlternatingItem)
    {
    if(e.Item.Cells[1].Text.Length>18)
    {
    e.Item.Cells[1].Text=e.Item.Cells[1].Text.Substring(1,18); 
    }
    }
    }
      

  11.   

    <asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="id" DataNavigateUrlFormatString="../showNews.aspx?id={0}"
    DataTextField="title" ></asp:HyperLinkColumn>
      

  12.   

    e.Item.Cells[1].Text=e.Item.Cells[1].Text.Substring(0,18);
      

  13.   

    zhangzs8896(小二),不行啊。新闻标题全部都显示出来了。
      

  14.   

    TO:Liu_Qiang() 
    你这种方式也不对啊。