Html 
<asp:HyperLinkField DataNavigateUrlFields="PART_NO" DataNavigateUrlFormatString="javascript:GetDetails_NotRelease('{0}')" DataTextField="SumStatus1" HeaderText="未清关" SortExpression="SumStatus1" >
 </asp:HyperLinkField >
Code
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex > -1)
        {            
            DataRowView drv = e.Row.DataItem as DataRowView;           
            HyperLink Status1HyperLink = e.Row.Cells[INDEX_OF_STATUS1].Controls[0] as HyperLink;
            if (Status1HyperLink.Text == "0")
                Status1HyperLink.Enabled = false;
            else
            {
                Status1HyperLink.Enabled = true;
            }
         }
     }
画面上有数值,但是不能超连接,为什么啊?
我后来把Code改成
else
            {
                Status1HyperLink.Enabled = true;
                Status1HyperLink.NavigateUrl = "javascript:GetDetails_NotRelease('" + drv["PART_NO"] + "')";
            }
就可以了,为什么啊,在Html不能设置超连接么?一定要在Code里写么?

解决方案 »

  1.   

    你没设置POSTBACKURL属性?
    举个例子,
    <a>link</a>跟<a href="b.aspx">link</a>
    自己体会下里面的区别
      

  2.   

    直接将你的HyperLinkField转化为模板列即可
      

  3.   

    <asp:HyperLinkField DataNavigateUrlFields="PART_NO" DataNavigateUrlFormatString="javascript:GetDetails_NotRelease('{0}')" DataTextField="SumStatus1" HeaderText="未清关" SortExpression="SumStatus1" >
    </asp:HyperLinkField >你在前台 赋值 NavigateUrl 跟后台是一样的
    看你的html,明显你没有赋值
      

  4.   

    你因为你没有设置HyperLink的URL地址啊!!
      

  5.   

    接上面,因为DataNavigateUrlFormatString不接受"javascript:...."这样的格式,所以客户端不会生成href属性。
      

  6.   

    我在html里写:
    function GetDetails_NotRelease(partNo)
    {
      OpenWindow("./PartNoDialog.aspx?link=PartNoDialog_NotRelease.aspx?PART_NO='" + partNo + "'");
    }
    function OpenWindow(sUrl)
    {
    window.open(sUrl,null,"height=700,width=700,resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no");
    }
    而且这样的写法在2003里是可以的