• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    DataGrid中实现超链接的3种方法

    1.使用DataGrid中的超链接列—HyperLinkColumn

    相信很多人都使用过datagrid中的超链接列,它很好用,默认情况下只能传递一个参数,如下所示:

    复制代码 代码如下:

    asp:HyperLinkColumn DataTextField="CompanyName" DataNavigateUrlField="CustomerID"     DataNavigateUrlFormatString="Default2.aspx?customerid={0}"  eaderText="link">
    /asp:HyperLinkColumn>

    从上可以看出,传递一个参数的超链接是很容易做到的。那么传递多个参数该如何做?

    2.在DataGrid的ItemDataBound事件中对超链接列赋值

    假设有一个id为DataGrid1的Datagrid,第一列为超链接列(下标为0),那么它的ItemDataBound事件可写成下面形式。

    复制代码 代码如下:

    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs   e) 
      { 
          if(e.Item.ItemType==ListItemType.Pager||e.Item.ItemType==ListItemType.Header||e.Item.ItemType==ListItemType.Footer)
         {
            return;  //判断是否为页眉,页脚
         }
         else
         {
            HyperLink link=( HyperLink)e.Item.Cells[0].Controls[0];//这里也可以用findcontrol
            link.NavigateUrl="webform3.aspx?id=XXX name=XXX";
    //如果跟某列有关,则可写为    
           // link.NavigateUrl="webform3.aspx?id=”+e.Item.Cells[列号].text;
          }
    }

        如果想在模版列使用超链接,可以在该列模版设为LinkButton,可以多个LinkButton在一起,不过id不能相同。我们仍假定该列位是第一列,此时,为其中某个LinkButton定义链接可以如下,把语句

    复制代码 代码如下:

     HyperLink link=( HyperLink)e.Item.Cells[0].Controls[0];

    替换成

    复制代码 代码如下:

         LinkButton link=( LinkButton)e.Item.Cells[0]. FindControl(“LinkButton的id”);
         link.Attributes["onclick"] = "script>location.href='XXX.aspx';/script>";

    当该列只有一个控件即一个LinkButton时,可以用如下语句来实现:

    复制代码 代码如下:

    e.Item.Cells[0].Attributes["onclick"] = "script>location.href='XXX.aspx';/script>";

    这样就省去查找控件的时间。

        上面实际我们已经说到两种方法,一种利用HyperLinkColumn列在ItemDataBound事件里添加NavigateUrl,另一种是在ItemDataBound事件中使用javascript定义click事件,后者比较灵活,只需控件有click事件即可。

    3.使用HTML超链接标记

    复制代码 代码如下:

    asp:TemplateColumn>
      ItemTemplate>
       a href="Default.aspx?id='%#(String)DataBinder.Eval(Container.DataItem,"CustomerID")%>'
                             name='%#(String)DataBinder.Eval(Container.DataItem,"CompanyName")%>'">操作/a>
      /ItemTemplate>
    /asp:TemplateColumn>

        它功能就是点击时转到Default.aspx,同时传递参数id和name,这里两个参数都是通过数据绑定动态生成。这种方法在VS2005中是成功的,但是在VS2003中却报错。

        还有一种方法很巧妙,它同样实现第三种方法的功能:假设第二列做为超链接,aspx页面代码:

    复制代码 代码如下:

    asp:boundcolumn   DataField="ID"   Visible=False>/asp:boundcolumn>  //第一列
    asp:boundcolumn   DataField="名称">/asp:boundcolumn>//第二列

       ItemDataBound事件如下:

    复制代码 代码如下:

    public   void   DataGrid1_ItemDataBound(object sender,DataGridItemEventArgs e) 
    {          
           if(e.Item.ItemType==ListItemType.Pager||e.Item.ItemType==ListItemType.Header||e.Item.ItemType==ListItemType.Footer)
           {
              return;//判断是否为页眉,页脚
           }
          else
           {
              e.Item.Cells[1].Text="a href=News.aspx?ID="+e.Item.Cells[0].Text+">"+e.Item.Cells[1].Text+"/a>";//这里可以改成你需要的; 
           }     
    }

    上一篇:.Net下二进制形式的文件(图片)的存储与读取详细解析
    下一篇:GridView使用CommandField删除列实现删除时提示确认框
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    DataGrid中实现超链接的3种方法 DataGrid,中,实现,超,链接,