在gridview上 一天撞两次鬼,请钟馗帮我抓鬼

瑞大 2012-05-08 05:21:40
功能描述:本人觉得微软的gridview的增删改查功能不太好看,于是自己实现了gridview的增删改查,并且让选中行变色功能。先看一下正常的情况:
自己实现增删改功能有一个比较麻烦的问题就是传值的问题,比如说我要获得选中行的业务数据。还好有大神给出了解决方案
拿来用吧。
在服务器端给每一行添加单击事件触发一个前台脚本函数,并传入该行的数据,然后就可以再前端获得该行的业务数据了。

效果是这样的:

按道理这么简单的功能应该没有什么问题,但是当我在任务代号里输入字母,然后传到前台时见鬼了。前台的单击事件没反应

难道gridview的datakeys字段一定要是整数吗?
我把这一样注掉也不行:this.taskView.DataKeyNames = new string[] { "taskid" };
谁能跟我详细说一下DataKeyNames,一定要指定一个数字型的字段么?你不让我用那我就不用了。不用还不行么。
我用System.DateTime.Now.Ticks生成一串数字,
这次又见鬼了
我的第一反应是溢出,可是我传的是字符串啊,跟溢出有半毛钱关系么?
从数据库里面取出来的数传到前台怎么就变了呢?又不是当时生成的,如果是当时生成的,电脑反应慢有个几毫秒的时差还说得过去,但是我这数是从数据库里取出来的?彻底崩溃了!!!有没有道行高的高手帮我抓出这两只小鬼啊?拜托了!!!
(在别的电脑上跑也有同样的问题)
...全文
118 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
瑞大 2012-05-08
  • 打赏
  • 举报
回复
恍然大悟,两个问题其实是同一个问题,谢谢yes16ws
瑞大 2012-05-08
  • 打赏
  • 举报
回复
恍然大悟,两个问题其实是同一个问题,多谢yes16ws
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
这很明白的。 跟一个方法传参一样 要确定类型 难道你一个 function aa(int i,string b)
你想象一下 GridViewRowClick(abcdss) JS怎么编译它。 他会说哦 我不认识他。 你加了'' 他就会说 哦这是个字符串var
而数字JS会是默认的 他会说 哦 这就是数字。
[/Quote]
关键是两个数很接近,就后面两位或者一位不一样,它给我个随机数我还好理解
全局变量 2012-05-08
  • 打赏
  • 举报
回复
这很明白的。 跟一个方法传参一样 要确定类型 难道你一个 function aa(int i,string b)
你想象一下 GridViewRowClick(abcdss) JS怎么编译它。 他会说哦 我不认识他。 你加了'' 他就会说 哦这是个字符串var
而数字JS会是默认的 他会说 哦 这就是数字。
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
DateTime.Now.Ticks.ToString();
这是数据库取出来的?
对了代码要规范。 要不别人很难读懂你的意思的。
[/Quote]
我是为了重现错误才这么写的
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
DateTime.Now.Ticks.ToString();
这是数据库取出来的?
对了代码要规范。 要不别人很难读懂你的意思的。
[/Quote]
我是先存再取,这个是在添加到数据库的时候随即生成的一串数字。
没有直接传给显示界面
显示界面是读取数据库然后绑定到gridview的
瑞大 2012-05-08
  • 打赏
  • 举报
回复

在后台给参数加个引号传过去是没问题的,我就是想知道javascript为什么会这么处理,为什么会不一样?即使作为数值类型,也不会溢出啊
全局变量 2012-05-08
  • 打赏
  • 举报
回复
DateTime.Now.Ticks.ToString();
这是数据库取出来的?
对了代码要规范。 要不别人很难读懂你的意思的。
瑞大 2012-05-08
  • 打赏
  • 举报
回复
而且每次差值都是一样,没这么巧吧
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你看下HTML 的GridViewRowClick源码是不是跟显示的值一样。
应该是时间差的问题,运行上还是有毫秒是时间差的。
[/Quote]
上面的代码是我添加页面的代码,是添加到数据库的,而查询页面是从数据库里面取的数据,时间差好像说不过去吧
全局变量 2012-05-08
  • 打赏
  • 举报
回复
你是要光棒效果么?
protected void gvBooks_RowDataBound(object sender,GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onmouseover",
"currentcolor=this.style.backgroundColor;this.style.backgroundColor=#6699ff")
e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor")
}
}
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
你看下HTML 的GridViewRowClick源码是不是跟显示的值一样。
应该是时间差的问题,运行上还是有毫秒是时间差的。
[/Quote]
谢谢你,这个问题解决了,应该就是你说的那个原因。
全局变量 2012-05-08
  • 打赏
  • 举报
回复

你看下HTML 的GridViewRowClick源码是不是跟显示的值一样。
应该是时间差的问题,运行上还是有毫秒是时间差的。
瑞大 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这是JS接收数据的问题。

改成String(datakey) 或在传入是 加 ''
[/Quote]
谢谢,第二个问题解决了,必须在后台加‘’,前台用String不管用,问题依然会出在
全局变量 2012-05-08
  • 打赏
  • 举报
回复
this.GridViewRowClick('abc');
瑞大 2012-05-08
  • 打赏
  • 举报
回复
钟馗现身!!!!!
全局变量 2012-05-08
  • 打赏
  • 举报
回复
这是JS接收数据的问题。

改成String(datakey) 或在传入是 加 ''

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧