DataGrid中如何实现超链接

2019-10-18 08:39:22来源:爱站网 阅读 ()

新老客户大回馈,云服务器低至5折

在开发项目的时候相信大家都有使用过超链接吧,但是你知道在DataGrid中如何实现超链接吗?如果你还不知道的话那么现在就跟爱站小编一起去学习学习吧。

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>";//这里可以改成你需要的;?
?????? }?????
}

上文介绍的就是关于DataGrid中如何实现超链接的内容,在asp.net编程中还有很多知识技巧值得我们去挖掘,一定要加油哦!


原文链接:https://js.aizhan.com/develop/aspnet/9550.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:.aspx转换为.htm的方法

下一篇:asp.net如何实现无刷新翻页