前台aspx代码:
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"  
            ShowHeader=False   BorderWidth=0px  
        DataSourceID="SqlDataSource1" DataKeyNames="id">
        <Columns>
          
            <asp:TemplateField HeaderText="topic" SortExpression="topic"  ItemStyle-HorizontalAlign=Left>
                <ItemTemplate >
                    <asp:HyperLink ID="HyperLink1" runat="server" ForeColor="#184073"  Font-Size="14px"  NavigateUrl='<%# Eval("id","view.aspx?id={0}") %>'  Text='<%# Bind("topic") %>'></asp:HyperLink>
                </ItemTemplate>             <ItemStyle HorizontalAlign="Left" Width="300px"></ItemStyle>
            </asp:TemplateField>
           </Columns>
            </asp:GridView>
后台cs代码:
           foreach (GridViewRow gvr in GridView1.Rows)
             {
               string ginto = Convert.ToString(((HyperLink)gvr.FindControl("HyperLink1")).Text);
              ((HyperLink)gvr.FindControl("HyperLink1")).Text = SubStr(ginto,20);
           
             }
           
        }        public string SubStr(string sString, int nLeng)
        {
            if (sString.Length <= nLeng)
            {
                return sString;
            }
            else
            {
                string sNewStr = sString.Substring(0, nLeng);
                sNewStr = sNewStr + "…";
                return sNewStr;
            }
为什么topic字段不管字符超不超过20个,都加上了省略号,是不是无法判断gridview中 ((HyperLink)gvr.FindControl("HyperLink1")).Text 的长度?另想问,在a页面中,通过前台传值<li><a href="index.aspx?id=1"></a>链接</li>,在另一个b页面中的iframe打开页面时,为什么会出现中文乱码

解决方案 »

  1.   

    断点调试
    看看
    Convert.ToString(((HyperLink)gvr.FindControl("HyperLink1")).Text)的内容及ginto.Length出现乱码,应该是页面编码的问题
      

  2.   

     foreach (GridViewRow gvr in GridView1.Rows)
      {
      string ginto = Convert.ToString(((HyperLink)gvr.FindControl("HyperLink1")).Text);
      ((HyperLink)gvr.FindControl("HyperLink1")).Text = SubStr(ginto,20);
        
      }
    这个是写在哪个地方,何时触发的,可能也有影响.
      

  3.   

    看能否用样式表处理:CSS控制: 文章的标题长度,溢出文字用省略号代替/*-----溢出文字用省略号代替---*/
          white-space:nowrap;
          text-overflow:ellipsis;
          overflow:hidden;
      

  4.   


    把你后台方法参数改成object public string SubStr(object sString, object nLeng)
      {
          int i = Convit.Toint32(nLeng);
         string str = sString.Tostring();
      if (str.Length <= i)
      {
          return str;
      }
      else
      {
          string sNewStr = sString.Substring(0, i);
          sNewStr = sNewStr + "…";
          return sNewStr;
      }前台:Text='<%#  SubStr(Bind("topic"),10) %>'
      

  5.   

    中文乱码检查页面编码
    public string Strsplit(string str,int maxlength)
    {
    string strg=string.empty;
     if(str.Length>maxlength)
      strg=str.substring(0,maxlength)+"...";
    else
      strg=str;
    return str;
    }DataTextField= <%# Strsplit(Eval("").ToString(),10) %>
    RowDataBound中截取
      

  6.   

    把这句string ginto = Convert.ToString(((HyperLink)gvr.FindControl("HyperLink1")).Text);里面的Convert.Tostring换成string ginto = (((HyperLink)gvr.FindControl("HyperLink1")).Text).ToString();这样,就可以了,呵呵,谢谢大家,
      

  7.   

    页面乱码的问题还没有解决啊,B页面有两个iframe,左侧iframe1,右侧iframe2,在左边iframe1里的下拉菜单里链接,  <a href="1.aspx" target="iframe2">链接</a>没有乱码,1.aspx页面里就几行汉字,但是在a页面里有一个超链接<li><a href="b.aspx?id=5">链接</a>,用js传值过来在B页面的iframe2里打开1.aspx,就出现中文乱码了,
      

  8.   

    不知道这段代码是不是你想要的。Gridview里面 <asp:TemplateField HeaderText="内容">
     <ItemTemplate>
     <asp:Label ID="Label1" runat="server" Text='<%# Eval("Content").ToString().Length>20?Eval("Content").ToString().Substring(0,20)+"..":Eval("Content") %>' ToolTip='<%# Eval("Content")%>'></asp:Label>
     </ItemTemplate>
     </asp:TemplateField>
      

  9.   

    解决方法:数据绑定后过滤每一行即可
    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                DataRowView mydrv;
                string gIntro;
                if (GridView1.PageIndex == 0)
                {
                    mydrv = myds.Tables["飞狐工作室"].DefaultView[i];//表名
                    gIntro = Convert.ToString(mydrv["家庭住址"]);//所要处理的字段
                    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
                }
                else
                {
                    mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
                    gIntro = Convert.ToString(mydrv["家庭住址"]);
                    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
                }
            } 调用的方法:    public string SubStr(string sString, int nLeng)
        {
            if (sString.Length <= nLeng)
            {
                return sString;
            }
            string sNewStr = sString.Substring(0, nLeng);
            sNewStr = sNewStr + "...";
            return sNewStr;
        }后台全部代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
    {
        SqlConnection sqlcon;
        SqlCommand sqlcom;
        string strCon = "Data Source=(local);Database=北风贸易;Uid=sa;Pwd=sa";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["SortOrder"] = "身份证号码";
                ViewState["OrderDire"] = "ASC";
                bind();
            }
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            bind();
        }
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string sqlstr = "delete from 飞狐工作室 where 身份证号码='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
            sqlcon = new SqlConnection(strCon);
            sqlcom = new SqlCommand(sqlstr,sqlcon);
            sqlcon.Open();
            sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            bind();
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            sqlcon = new SqlConnection(strCon);
            string sqlstr = "update 飞狐工作室 set 姓名='"
                + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',家庭住址='"
                + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "' where 身份证号码='" 
                + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
            sqlcom=new SqlCommand(sqlstr,sqlcon);
            sqlcon.Open();
            sqlcom.ExecuteNonQuery();
            sqlcon.Close();
            GridView1.EditIndex = -1;
            bind();
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            bind();
        }
        public void bind()
        {
            string sqlstr = "select top 5 * from 飞狐工作室";
            sqlcon = new SqlConnection(strCon);
            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
            DataSet myds = new DataSet();
            sqlcon.Open();
            myda.Fill(myds, "飞狐工作室");
            GridView1.DataSource = myds;
            GridView1.DataKeyNames = new string[] { "身份证号码" };
            GridView1.DataBind();
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                DataRowView mydrv;
                string gIntro;
                if (GridView1.PageIndex == 0)
                {
                    mydrv = myds.Tables["飞狐工作室"].DefaultView[i];
                    gIntro = Convert.ToString(mydrv["家庭住址"]);
                    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
                }
                else
                {
                    mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
                    gIntro = Convert.ToString(mydrv["家庭住址"]);
                    GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
                }
            }
            
            sqlcon.Close();
        }
        public string SubStr(string sString, int nLeng)
        {
            if (sString.Length <= nLeng)
            {
                return sString;
            }
            string sNewStr = sString.Substring(0, nLeng);
            sNewStr = sNewStr + "...";
            return sNewStr;
        }
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //如果是绑定数据行 
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ////鼠标经过时,行背景色变 
                //e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#E6F5FA'");
                ////鼠标移出时,行背景色变 
                //e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");            ////当有编辑列时,避免出错,要加的RowState判断 
                //if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
                //{
                //    ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')");
                //}        }
            if (e.Row.RowIndex != -1)
            {
                int id = e.Row.RowIndex + 1;
                e.Row.Cells[0].Text = id.ToString();
            }    }
    }
    http://wenku.baidu.com/view/7626f4f8941ea76e58fa04da.html
      

  10.   

    粘贴样式:
    Style="white-space:nowrap; text-overflow:ellipsis; overflow:hidden;"
    设置个宽度。好用