DataGrid中有一列是LinkButton模板列,由于该列的数据过长,需要截取,请赐教,如何在LinkButton中截取字符串?如图:
题目(LinkButton)     |    科目编码    |    科目名称
下面叙述正确的是……          001              语文

解决方案 »

  1.   

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    //限定DATAGRID中字符显示的长度
    byte[] bytLength=Encoding.Default.GetBytes(e.Item.Cells[3].Text);
    if (bytLength.Length>20)
    {
    e.Item.Cells[3].Text=e.Item.Cells[3].Text.Substring(0,12)+"...";
    }    
        
    }
      

  2.   

    在ItemDataBound事件中来处理就可以。参考代码如下:
     protected void dgdList_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            { 
                DataRowView view=e.Item.DataItem as DataRowView;
                LinkButton btn=e.Item.FindControl("LinkButton1") as LinkButton;
                btn.Text=view["title"].ToString().Length>10?view["title"].ToString().
                Substring(0,10)+"...":view["title"].ToString();
              }
         }
      

  3.   

    绑定时用这个函数截一下
    #region 按字符串实际长度截取定长字符窜
            /// <summary>
            /// 按字符串实际长度截取定长字符窜
            /// </summary>
            /// <param name="str">原字符串</param>
            /// <param name="length">要截取的长度</param>
            /// <returns>string型字符串</returns>
            public string CutString(string str, int length)
            {
                string delsqace = str.Trim();
                int i = 0, j = 0;
                foreach (char chr in delsqace)
                {
                    if ((int)chr > 127)
                    {
                        i += 2;
                    }
                    else
                    {
                        i++;
                    }
                    if (i > length)
                    {
                        delsqace = delsqace.Substring(0, j);
                        break;
                    }
                    j++;
                }
                return delsqace;        }
            #endregion
      

  4.   

    是想在绑定数据的时候截取字符串,数据库返回的是DataSet
      

  5.   

    <%# mystore.CutString(DataBinder.Eval(Container.DataItem, "Title").ToString(), 28)%>
    mystore 是;类名  这样用就可以
      

  6.   

    我是先把数据绑定到DataGrid中,然后再截取
      

  7.   

    用<%# mystore.CutString(DataBinder.Eval(Container.DataItem, "Title").ToString(), 28)%>
    提示找不到类型或命名空间名称“mystore”(是否缺少 using 指令或程序集引用?)
      

  8.   

    .............
    你就直接把CutString()粘贴到.CS文件里 然后
    把数据绑定到 DataGrid
    <%# CutString(DataBinder.Eval(Container.DataItem, "这里是字段名").ToString(), 这里是整型的长度)%>
    就可以了