本文介绍了在DataGrid中实现超链接的三种方法,有需要的朋友可以参考一下。
1.使用DataGrid中的超链接列—HyperLinkColumn
相信很多人都用过datagrid中的超链接列,而且效果很好。默认情况下,只能传递一个参数,如下所示:
复制代码如下:ASP:超链接列datatextfield='公司名称' datanavigateurlfield=' customerid ' datanavigateurlformat string=' default 2 . aspx?customerid={ 0 } ' eader text=' link '/ASP:hyperlink column从上面可以看出,传递一个参数的超链接是很容易的。那么如果传递多个参数该怎么办呢?
2.在DataGrid的ItemDataBound事件中对超链接列赋值
假设有一个id为DataGrid1的Datagrid,第一列是一个超链接列(下标0),那么它的ItemDataBound事件可以写成下面的形式。
复制代码如下:private void datagrid 1 _ itemdatabound(对象发送方,系统。web . ui . web controls . datagriditemeventargs e){ if(e . item . item type==listitem type。pager | | e . item . item type==listitem type。header | | e . item . item type==listitem type。页脚){ return//确定是页眉还是页脚} else { hyperlink link=(hyperlink)e . item . cells[0]。控件[0];//也可以使用FindControlLink。Navigateurl=' webform3.aspx?id=XXX name=XXX ';//如果与列相关,可以写成//link . navigateurl=' web form 3 . aspx?id=" e . item . cells[列号]。文本;}}
如果要在模板列中使用超链接,可以将该列中的模板设置为LinkButton。您可以同时拥有多个linkbuttons,但id不能相同。我们仍然假设该列位是第一列。这时,为其中一个LinkButton定义一个链接可以如下:语句
复制代码如下:hyperlink link=(hyperlink)e . item . cells[0]。控件[0];用…替换
复制代码如下:link button link=(link button)e . item . cells[0]。FindControl(" link button id ");链接。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: template列项模板a href=' default.aspx?id=' % #(string)databinder . eval(container . dataitem,' customerid ')% ' name=' % #(string)databinder . eval(container . dataitem,' company name ')% ' action/a/item template/ASP:template column
它的作用是点击时转到Default.aspx,同时传递参数id和名称,其中两个参数都是通过数据绑定动态生成的。此方法在VS2005中成功,但在VS2003中报告了一个错误。
还有一个巧妙的方法,也实现了第三种方法的功能:假设第二列作为超链接,aspx页面代码:
复制代码如下:ASP:boundcolumn data field=' id ' visible=false/ASP:BoundcolumnData field=' name '/ASP:BoundcolumnData field//第二列
ItemDataBound事件如下:
复制代码如下:public void datagrid 1 _ item databound(object sender,DataGridItemEventArgs e){ if(e . item . item type==listitem type。pager | | e . item . item type==listitem type。header | | e . item . item type==listitem type。页脚){ return//确定是页眉还是页脚} else {e.item.cells [1]。text=' a href=news.aspx?ID=' e.Item.Cells[0]。Text '' e.Item.Cells[1]。文本“/a”;//这个可以改成你需要的;} }
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。