我把DataGrid中的列设置成普通的BoundColumn列,然后再用
if(e.Item.Cells[2].Text.ToString().Length>25)
{
e.Item.Cells[2].Text=e.Item.Cells[2].Text.Substring(0,25)+"…";
}
方法来设置不会出任何问题;可是,我只要把列设置成别的,比如HyperLinkColumn,再用上面的方法,e.Item.Cells[2].Text就没有办法获得值.请问名位,这个是什么原因呢
小弟在线等哦!

解决方案 »

  1.   

    e.Item.Cells[2].Controls[0].Text
    也可能是
    e.Item.Cells[2].Controls[1].Text
    你看看是那个?
      

  2.   

    ((HyperLink)e.Item.Cells[2].Controls[0]).Text
      

  3.   

    问题是,我设置成不是BoundColumn列就不行啊!
      

  4.   

    ((HyperLink)e.Item.Cells[2].Controls[0]).Text这样做还是不行
    不过还是要谢谢你!
      

  5.   

    e.Item.Cells[2].Controls[0].Text
    也可能是
    e.Item.Cells[2].Controls[1].Text这两都不可以,谢谢了啊!
      

  6.   

    后台添加:
    protected string FormatString(object o,int length)
    {
    string s = o.ToString();
    if(s.Length > length)
    return s.Substring(0,length) + "...";
    return s;
    }
    前台改变列为模板列:
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:HyperLink id=HyperLink1 runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.News_ID", "NewsShow.aspx?ID={0}") %>' Text='<%# FormatString(DataBinder.Eval(Container, "DataItem.News_Subject"),10) %>' Target="_blank">
    </asp:HyperLink>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  7.   

    ((HyperLink)e.Item.Cells[1].Controls[0]).Text //第二列
    楼主是第几列,第一列用Cells[0]以此类推
      

  8.   

    ((HyperLink)(e.Item.Cells[0].FindControl("HyperLinkName"))).Text//模板列