采用三层结构,
想在BLL层中处理数据源中的超链接字段,
然后在表示层只是绑定修改后的数据源。结果发现了一个问题。部分关键代码如下:
        public DataTable DIRefresh()
        {
            DataTable myDT = new DataTable();
            myDT = DrugInformation.Refresh();
            for (int i = 0; i < myDT.Rows.Count; i++)
            {
                int s=myDT.Rows[i][2].ToString().IndexOf('#');                StringBuilder sb = new StringBuilder();
                sb.Append("<a href=\" ");
                sb.Append(myDT.Rows[i][2].ToString().Substring(s + 1));
                sb.Append(" \"> ");
                sb.Append("相关资料下载</a>");
                myDT.Rows[i][2] = HttpContext.Current.Server.HtmlDecode(sb.ToString());                }
            return myDT;
        }
结果显示的结果是这样的 <a href=" 资料/吗啡.doc# "> 相关资料下载</a>而不是我想要的超链接,不知道怎么解决,问题出在了哪里,各位帮忙一起想想?

解决方案 »

  1.   

    myDT.Rows[i][2].ToString().Substring(s + 1)应该是什么数据? 
      

  2.   

    不要直接绑定 html 代码,将 真实链接 绑定给 HyperLink.NavigateUrl 就行了
      

  3.   

    问题补充下:    我在想GRIDVIEW控件在绑定数据源之前,将数据源中的STRING类型的超链接字段作下预处理,将其改为超链接类型,这样在绑定后,就能够直接显示超链接了。TO Jinglecat:    我也尝试过绑定HYPERLINK,但是显示出来的也不正确,不知道是不是我的绑定方式不对,代码如下:        public DataTable DIRefresh() 
            { 
                DataTable myDT = new DataTable(); 
                myDT = DrugInformation.Refresh(); 
                for (int i = 0; i < myDT.Rows.Count; i++) 
                { 
                    int s=myDT.Rows[i][2].ToString().IndexOf('#');                 HyperLink hk = new HyperLink();
                    hk.NavigateUrl = myDT.Rows[i][2].ToString().Substring(s + 1);
                    hk.Text = "相关资料下载";
                    myDT.Rows[i][2] = hk;              } 
                return myDT; 
            } 
    但是显示出来的更加让我困惑:
    System.Web.UI.WebControls.HyperLink 而不是我想要显示的超链接对象。