我用datagrid绑定一个某一张表,其中有一列是超级连接列,代码如下
<ItemTemplate>
<asp:HyperLink runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.x_id", "ShowContent.aspx?xid={0}") %>'
Text='<%# DataBinder.Eval(Container, "DataItem.x_name") %>'>
</asp:HyperLink>
</ItemTemplate>现在的一个问题是如何在其中添加一个方法,该方法是判断该超级链接是否有内容,如何没有内容,则该访问链接失效;如果有内容,则链接有效;
请问各位老师这该如何实现,请老师们给段代码帮我解决一下我的难题!

解决方案 »

  1.   

    用客户端脚本:
    <ItemTemplate>
    <asp:HyperLink runat="server" NavigateUrl="javascript:relink('<%# DataBinder.Eval(Container, "DataItem.x_id", "ShowContent.aspx?xid={0}") %>')"
    Text='<%# DataBinder.Eval(Container, "DataItem.x_name") %>'>
    </asp:HyperLink>
    </ItemTemplate><script>
      function relink(url)
      {
        if(url!=null && url.length>0) //这里看你怎么判断
          location = url;
      } 
    </script>我没有测试,你自己试试!
      

  2.   

    楼上的谢谢你们的回答,可能我没有表述清楚,打个比方:有两张表,一张是user(u_id,u_name),另一张是信息表info(i_id,i_content,u_id),现datagrid绑定用户表user,然后将用户(u_name)作为超级链接列,通过点击该用户显示其用户手中所有的信息(也就是i_content,通过u_id外健链接两张表),现在的问题是,有些用户手中有信息,有些用户手中没有信息,那么通过datagrid绑定用户表是能否验证该用户手中是否有信息,如果有则该超链接有效,否则该超链接呈灰白(也就是无效),其实就是通过datagrid绑定时就判断好,否则就得在点击该超链接时加以判断(后者很简单,也能够实现),请各位老师帮小弟一把,给个具体的代码???
      

  3.   

    <ItemTemplate>
    <asp:HyperLink runat="server" NavigateUrl='<%# Convert.ToInt32(DataBinder.Eval("DataItem.x_id"))>0 ? "ShowContent.aspx?xid="+Eval(DataItem.x_id"): "#" %>'
    Text='<%# DataBinder.Eval(Container, "DataItem.x_name") %>'>
    </asp:HyperLink>
    </ItemTemplate>
      

  4.   

    大家看一下微软的这个链接http://www.microsoft.com/china/technet/webcasts/ondemand/ondemand.aspx
    我曾经看到过,它上面有很多视频内容,如果管理员还没有把该视频内容上传,那么该“下载”链接就灰白(无效),就是这么一个情况,如果可以下载,那么“下载”链接就有效,其实也就是先通过datagrid将列表先绑定起来,然后在加以判断!