| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4826 人关注过本帖
标题:[求助]GridView鼠标选择行问题【未解决】
取消只看楼主 加入收藏
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
结帖率:100%
收藏
 问题点数:0 回复次数:11 
[求助]GridView鼠标选择行问题【未解决】

html页面:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="merID" HeaderText="商品ID" />
<asp:BoundField DataField="merName" HeaderText="商品名称" />
<asp:BoundField DataField="providerid" HeaderText="供应商ID" />
<asp:BoundField DataField="categoryID" HeaderText="分类" />
</Columns>
</asp:GridView>

cs文件代码:
public partial class GridViewSample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//添加判断会报错
{
BusinessLogical.DataSource dataSource = new BusinessLogical.DataSource();
this.GridView1.DataSource = dataSource.GetMerchandises("");
this.GridView1.DataBind();
}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
PostBackOptions myPostBackOptions = new PostBackOptions(this);
myPostBackOptions.AutoPostBack = false;
myPostBackOptions.RequiresJavaScriptProtocol = true;
myPostBackOptions.PerformValidation = false;

String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as System.Web.UI.WebControls.GridView, "Select$" + e.Row.RowIndex.ToString());

if (e.Row.RowType == DataControlRowType.DataRow)
{
//单击事件
e.Row.Attributes.Add("onclick", evt);

//当鼠标停留时更改背景色
e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#A9A9A9'");

//当鼠标移开时还原背景色
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");

//设置悬浮鼠标指针形状为"小手"
e.Row.Attributes["style"] = "Cursor:hand";
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Write(this.GridView1.SelectedIndex);
}
}

Page_Load中不加IsPostBack判断,正常;否则,网页就报错

群策群力,大家帮帮忙,谢谢了,^_^

[此贴子已经被作者于2007-8-12 9:00:12编辑过]

搜索更多相关主题的帖子: 鼠标 GridView 选择 
2007-08-07 16:53
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
以下是引用bygg在2007-8-7 17:35:22的发言:
写个javascript中写个方法(比如rowClick),onclick事件时,调用rowClick事件,并返回点击的行号到本页面
在SelectedIndexChanged事件里面就可以取到这个值

呵呵,小弟还是不懂!

怎么调用rowClick事件,把点击的行号返回到本页面的SelectedIndexChanged事件里?需要用ajax嘛?这个还在学习中哈...


Flying without wings
2007-08-08 08:25
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
以下是引用sean88在2007-8-7 18:06:16的发言:

我测试了一下,Page_Load中无论不加IsPostBack判断,点击GridView1,都会出错.说明和IsPostBack无关,问题出在你写的那句单击事件事件,如果没有,运行正常
String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as System.Web.UI.WebControls.GridView, "Select$" + e.Row.RowIndex.ToString());
e.Row.Attributes.Add("onclick", evt);

不是很明白,你这里加这个单击事件,为何又用GridView1_SelectedIndexChanged事件?



不会吧?你是2005嘛?不知道报啥错哈,config文件要配置<pages enableEventValidation="false"/>

e.Row.Attributes.Add("onclick", evt);这句话就是把onclick和GridView1_SelectedIndexChanged关联起来;

如流川兄说的那样添加选择列问题就简单了,可我想要的效果是鼠标点击GridView行的任何地方,都可以触发SelectedIndexChanged事件


Flying without wings
2007-08-08 08:31
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
以下是引用foshan在2007-8-8 8:34:40的发言:
我是用以下代码实现在单元行的任意地方单击使该行处于选定状态(激发“选择”行事件)的……
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
this.GridView1.Rows[i].Attributes.Add("onclick", "javascript:__doPostBack('" + this.GridView1.Rows[i].FindControl("LinkButton1").ClientID.Replace("_", "$") + "','')");
}
}

可行,但是这样不是还要额外添加一个模版列放置LinkButton1嘛?

PS:RowDataBound事件里不需要再来个for循环了,直接e.Row获取当前绑定行


Flying without wings
2007-08-08 09:37
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
以下是引用foshan在2007-8-8 10:55:00的发言:
冰斑竹,怎么以下报错的?

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
e.Row.Attributes.Add("onclick", "javascript:__doPostBack('" + e.Row.FindControl("LinkButton1").ClientID.Replace("_", "$") + "','')");
}

不会吧,这样会报错?报啥错?


Flying without wings
2007-08-08 10:59
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
是的,RowDataBound事件里很容易疏忽对e.Row.RowType进行判断

if (e.Row.RowType == DataControlRowType.DataRow)
{
......
}

大家言归正卷啦,革命还未成功,大家仍需努力^_^

Flying without wings
2007-08-08 11:21
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 


为什么有的可以,有的报错呢?

Flying without wings
2007-08-08 19:39
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 
各位大哥大姐,小的小妹,问题依旧哈,帮帮忙哦...


Flying without wings
2007-08-10 08:28
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 

Flying without wings
2007-08-10 18:40
冰彩虹
Rank: 4
来 自:上海
等 级:贵宾
威 望:14
帖 子:806
专家分:44
注 册:2007-6-28
收藏
得分:0 

还没结帖呐,大哥大姐们


Flying without wings
2007-08-23 18:40
快速回复:[求助]GridView鼠标选择行问题【未解决】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013051 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved