DataList问题,兄弟们帮忙
我使用DataList显示的表,只能让用户单击某一行的某一列,实现跳转到别的页面...
不过我看现在许多网站,都是把鼠标停在某一行上,那一行就会改变颜色,无论单击这一行的哪个位置,都可以跳转到这行对应的页面,请问这是怎么实现的??
如果DataList不行,DataGird也可以,可是....怎么实现呢?
问题点数:100、回复次数:11Top
1 楼yong427(无言)回复于 2005-01-04 10:51:12 得分 50
DataGrid的DataList一样
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("ondblclick",Page.GetPostBackClientHyperlink((Button)e.Item.Cells[4].Controls[0],"")) ; //非正在编辑的项双击后模拟点击隐藏的编辑按钮。
e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='#99ff66'");
e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#ffffff'");
}
}
private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "Select")
{
/********************
里面写页面跳转代码
/***************** }
}Top
2 楼yangh44(涉世之初)回复于 2005-01-04 10:53:58 得分 5
可以实现!
在DataGird的属性生成器中可以设置的!利用DataGrid的 e事件!
DataList我没有实现过!Top
3 楼liuwaiqiang1981(在郁闷中努力)回复于 2005-01-04 11:18:05 得分 5
yong427(无言) 的应该对Top
4 楼xj728(“努力”就两个字)回复于 2005-01-04 11:46:19 得分 30
在DataGrid中的ItemTemplate模版中放一个LinkButton,id =lnkBtn, CommanName="Link"
在ItemDataBound事件如下写:
if(e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='beige'");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='white'");
e.Item.Attributes.Add("ondblclick",Page.GetPostBackClientEvent(e.Item.FindControl("lnkBtn"),""));
}
当然你还要在ItemCommand事件中写:
if(e.CommandName == "Link")
Response.Redirect("http://www.sina.com.cn");
呵呵,地址你随便写了
Top
5 楼xj728(“努力”就两个字)回复于 2005-01-04 11:47:52 得分 0
LinkButton也可以改成其它的控件,你可以在ItemDataBound事件中给LinkButton绑定值,这样就可以动态的跳转到指定的页面了Top
6 楼coldpanther2(ASP.NET朝九晚五)回复于 2005-01-04 12:02:19 得分 0
555555555555为什么在DataGrid里没问题,而在DataList里就不行呢?????
我试了很多遍了....Top
7 楼goody9807(http://goody9807.cnblogs.com)回复于 2005-01-04 12:27:02 得分 5
一定要用LinkButtonTop
8 楼coldpanther2(ASP.NET朝九晚五)回复于 2005-01-04 13:15:11 得分 0
试了半天,在DataList里面颜色是可以实现了,但是e.Item.Attributes.Add在DataList里没有效果,十分郁闷......Top
9 楼coldpanther2(ASP.NET朝九晚五)回复于 2005-01-04 13:36:18 得分 0
哈哈,经过不断的摸索,终于让我找到方法了,呵呵,为了让以后同样用DataList有同样问题的兄弟好搜索,特把解决方法写出来,同时,非常感谢楼上的几位大哥提供思路.
首先,不知道为什么在DataList的ItemDataBound添加
e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='beige'");
等等方法,都不会有效果,我就用DataGrid控件试了一下,发现DataGrid没有问题,然后我运行DataGrid后,查看代码,发现只不过是在<tr>标签里加上了<tr onmouseover="this.style.backgroundColor='beige'">
于是我手动将DataList里面的
<ItemTemplate>
<table>
<tr onmouseover="this.style.backgroundColor='beige'">
<td><%# DataBinder.Eval(Container.DataItem,"PKID") %></td>
</tr>
</table>
</ItemTemplate>
颜色问题解决....
呵呵,那个链接也不困难,将上面那个<tr>标签改成
<tr onmouseover="this.style.backgroundColor='beige'" onclick="window.open('abcd.aspx?PKID=<%# DataBinder.Eval(Container.DataItem,"PKID") %>')">
就一切OK了...
呵呵,虽然也许这个问题菜了点,但是通过大家的帮助,和自己的努力,来解决问题也是很开心的...
再次感谢楼上各位兄弟:)
Top
10 楼coldpanther2(ASP.NET朝九晚五)回复于 2005-01-04 13:37:00 得分 0
10分钟后结帖.Top
11 楼tengjian1981(新的一年又来到)回复于 2005-01-04 14:01:22 得分 5
upTop




