新足迹

 找回密码
 注册

精华好帖回顾

· 6年的巨变—招待国内同学后有感之二,兼谈中澳医疗的现状和区别。(首发原创,2011贺岁作品)280#中澳医术大比拼! (2010-12-15) passionboy · some interview questions (2005-4-7) astina
· 柬埔寨暹粒金边 9日 从吴哥王朝到红色高棉 (更新完毕) (2017-6-13) monica612 · 闲聊在澳洲做地产开发 - 更新了更新了20130812 (2010-3-5) Kling11
Advertisement
Advertisement
查看: 2741|回复: 39

ASP.NET HyperLinkField unclickable [复制链接]

发表于 2011-7-19 16:13 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
想在gridview里的一个column设置HyperLinkField, 但是runtime时却是unclickable, 不知道什么地方有问题?<asp:HyperLinkField DataNavigateUrlFormatString="javascript: var w=window.open('http://www.google.com','','width=400,height=400');"                    DataTextField="ALLOCA" DataNavigateUrlFields="ALLOCA" HeaderText="Ticket No" />
持不同股见者...
Advertisement
Advertisement

发表于 2011-7-20 20:33 |显示全部楼层
此文章由 kuxxc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kuxxc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
DataNavigateUrlFormatString doesn't seem to resolve to anything using the datafields.

Check your source and see what the anchor's HREF resolved to.

I would use a template field and a generic html anchor and use <%# %> directives to construct the href.

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 感谢分享

查看全部评分

发表于 2011-7-20 21:55 |显示全部楼层

回复 kuxxc 2# 帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Thanks.

我其中一张page用HyperLinkField working, 主要是背后写了trasfer 的code, 这次在背后用javascript 的code 来打开新的window, 我search了一下,好像有人讲 javacript: HyperLinkField就不working. 网上讲到的work around就是你讲的方法,不过我的javascript很差,还没有理解它。不过有一点觉得很诧异,这是很明显的HyperLinkField 无法handle javascript,但很少有官方网站提到它。
持不同股见者...

退役斑竹 特殊贡献奖章 新闻达人 三奖

发表于 2011-7-20 22:11 |显示全部楼层

回复 hornsay 3# 帖子

此文章由 花生 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 花生 所有!转贴必须注明作者、出处和本声明,并保持内容完整
if you want to use the client side sciprt, you can NOT use NavigateURL as it will cause postback.
the workaround is to use a link in the Text, for example, in the databound event, reformat the "text" as something like <a><span onclick="$(#abc).val('blan'); return false;"></span></a>
Note that the return false will stop postback to server.

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 感谢分享

查看全部评分

静以修身,俭以养德。
淡泊明志,宁静致远。

发表于 2011-7-20 23:01 |显示全部楼层

回复 花生 4# 帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Thanks 版主。

Sorry 背后的code 不是transfer, 是"~\other.aspx?key={0}"

ASP.NET对我来说还很陌生,感觉click gridview里的item 应该是比较straitforward, 但结果不support client script而必须用其他的方法来work around, 有点小失望。

MS应该在 HyperLinkField中加入client script的功能,这样会比较直接,server端call 是如何用,client端call又是如何用。

网上查了老半天,隐约觉得HyperLinkField无法实现client call, 但就是看不到官方的文件。
持不同股见者...

发表于 2011-7-20 23:17 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一般来说asp.net的web control里面用javascript是用 onclick = "blah, blah".

hyperlinkfield的property里面已经有navigateURL, 可以直接postback, 要在新窗口打开可以设置target.  不明白为何一定要call javascript?
Advertisement
Advertisement

发表于 2011-7-20 23:42 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2011-7-20 22:17 发表
一般来说asp.net的web control里面用javascript是用 .

hyperlinkfield的property里面已经有navigateURL, 可以直接postback, 要在新窗口打开可以设置target.  不明白为何一定要call javascript?


我现在还是一头雾水。scenario是click gridview 的 item 然后把这个item的值pass到新的window里面,这是别人的网站,e.g "http://www..othersite.com?key=itemvalue".

看了网上的solution,还是不懂,好像都比较复杂,先要call Page.RegisterStartScript。。。然后再执行其他的script..

曾经用比较简单的Diagnostics.Process.Start(), 在VS里working,但publish到localhost马上又不行。。。 感觉WebForm需要大量的java script, 否则好多东西无法运作。
持不同股见者...

发表于 2011-7-20 23:50 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
对熟悉 javascript的朋友来说,这个可能很简单。我因为一直做desktop app, 就觉得很困惑,one click to bring a new window, 在web里面就变得很复杂,有在client 执行的,有在server端执行的,而且有时还会被browser block。。。
持不同股见者...
头像被屏蔽

禁止访问

发表于 2011-7-20 23:55 |显示全部楼层

这东西用jQuery 搞。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2011-7-21 00:06 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我现在都基本上忘掉server control render出来的markup是什么样的了,N久没用过了。

你不一定用anchor来做,可以用任何一个markup(div,li...),用css的hover让它clickable,然后用jQuery对它的click作function,开新window这些都可以google出来,不难。

trouble shooting的时候,你要看他的mark up才能解决问题,view source一下。

尽量少用server control,没什么好处.

发表于 2011-7-21 00:18 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
楼上俩位大师讲的我心里直抖索,那么多东西要学,我原以为WebControl像Window control那样可以少写一些code, 现在看来不行啊,这Web的东西像个无底洞啊,太多要学了,而且网上search出来的太海量了,有些不working, 有些回答了,但看不懂,我不知道那些forum 比较权威?
持不同股见者...
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-7-21 00:20 |显示全部楼层

回复 hornsay 11# 帖子

此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
足迹IT版

发表于 2011-7-21 00:24 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-7-20 23:18 发表
楼上俩位大师讲的我心里直抖索,那么多东西要学,我原以为WebControl像Window control那样可以少写一些code, 现在看来不行啊,这Web的东西像个无底洞啊,太多要学了,而且网上search出来的太海量了,有些不working, 有些回答了,但看不懂,我不知道那些forum 比较权威?


没关系,慢慢来,这种问题应该比较常见,随便google一下就能出来很多,stackoverflow算是很不错的.

server control弊病很多,少用吧。

发表于 2011-7-21 00:25 |显示全部楼层

回复 dalaohu 12# 帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
足迹有 .NET四大金钢?
头像被屏蔽

禁止访问

发表于 2011-7-21 00:26 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-7-20 23:18 发表
楼上俩位大师讲的我心里直抖索,那么多东西要学,我原以为WebControl像Window control那样可以少写一些code, 现在看来不行啊,这Web的东西像个无底洞啊,太多要学了,而且网上search出来的太海量了,有些不working, 有些回答了,但看不懂,我不知道那些forum 比较权威?


web winform 思路是不同的

2010年度奖章获得者

发表于 2011-7-21 00:26 |显示全部楼层

回复 hornsay 14# 帖子

此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
至少有十八罗汉
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-7-21 00:28 |显示全部楼层

楼主跟我一起上 asp.net mvc 3 吧。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这两天正在学习。感觉这东西很好玩。 虽然开发实际项目比较痛苦。 但是思路很 web

发表于 2011-7-21 00:40 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这是我在网上看到的code: 但是这ItemTemplate 好像不是每一条row都重复的,而且位置也不是在想象中的地方。我不知道是哪里做错了?

aspx file:

<asp:GridView ID="GridView1" AutoGenerateColumns="False" ShowHeader="True" runat="server" OnRowDataBound="GridView1_RowDataBound">
<Columns>
  <asp:TemplateField>
   <ItemTemplate>
    <asp:Button ID="gridButton" runat="server" text="Open New Window"></asp:Button>
   </ItemTemplate>
  </asp:TemplateField>
</Columns>
</asp:GridView>

aspx.cs file:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ( e.Row.RowType == DataControlRowType.DataRow )
{
  // Button with an ID of "gridButton" is in column #0 of the Grid...
  Button gridButton = (Button)e.Row.FindControl("gridButton");

  if ( gridButton != null )
  {
   gridButton.Attributes.Add("onclick", "window.open('New.aspx'); return false;");

   // This will also work in VS 2.0 and up...
   //gridButton.OnClientClick("window.open('New.aspx'); return false;");
  }
}
}
持不同股见者...

发表于 2011-7-21 00:42 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-7-20 23:28 发表
这两天正在学习。感觉这东西很好玩。 虽然开发实际项目比较痛苦。 但是思路很 web


有本书你可以看看。

http://www.amazon.com/Pro-ASP-NE ... 11168943&sr=8-2

前两版mvc&mvc2的我看过,相当不错,但这本看它的review好像有点糊弄事,可能作者觉得靠这系列的本书进了ms就功成名就了吧。

如果不是新手,可以尝试一下。

发表于 2011-7-21 00:57 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我个人不喜欢webform, 就算在mvc3里,也不用asp.net控件,如果我写前端,就全部用html控件,
你这个情况可以这样来做,我以前这样做过,保证行,而且不难
1) gridview 有个event, 好像是onrowload还是什么(很久不用忘了),你到那个event里用C#直接加attribute到每一行,或者每一行的某列
2) 加attribute的思路比较多,其中一个(不是最优)是直接加 onclick=a(yourdata), 这样一来,在客户端最后生成的gridview的每一行(或者这一行的具体某列)都会有个客户端的onclick 事件,比如onclick=a(1)  , onclick=a(2)...
3) 然后再写个javascript函数 function a(data){...}作你想做的事,不需要register,直接放页面里就可以

发表于 2011-7-21 01:05 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
哦,我打开的时候没有18楼,我想说的是18楼差不多的意思,虽然那样有些缺陷。
其实事情被弄复杂了,本来没有那么复杂的
还有那个button的runat=server 好像不需要

[ 本帖最后由 典 于 2011-7-21 00:09 编辑 ]
Advertisement
Advertisement

发表于 2011-7-21 01:07 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-7-20 23:40 发表
这是我在网上看到的code: 但是这ItemTemplate 好像不是每一条row都重复的,而且位置也不是在想象中的地方。我不知道是哪里做错了?

aspx file:
aspx.cs file:

protected void GridView1_Ro ...


这个solution是你这个senario里面比较标准的, just use it.

发表于 2011-7-21 01:10 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-7-20 23:40 发表
这是我在网上看到的code: 但是这ItemTemplate 好像不是每一条row都重复的,而且位置也不是在想象中的地方。我不知道是哪里做错了?


你看一下有没有AlternativeItemTemplate
头像被屏蔽

禁止访问

发表于 2011-7-21 01:14 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-7-20 23:42 发表


有本书你可以看看。

http://www.amazon.com/Pro-ASP-NE ... 11168943&sr=8-2

前两版mvc&mvc2的我看过,相当不错,但这本看它的review好像有点糊弄事,可能作者觉 ...

胸台,你怎么知道我正在学习这本???

发表于 2011-7-21 01:17 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
18楼的方案虽然OK,但是有些缺陷,比如把函数加到每一行是不应该的,应该指向一个函数名,在那个函数里做具体的实现。
如果更进一步的优化,就是不需要在每一行加事件,如果gridview有100行,那就在每一行上都有onclick=xxxx, 没有必要的,只需要在gridview 上加一个事件就可以了,当然javascript函数本身的代码要多几行,
头像被屏蔽

禁止访问

发表于 2011-7-21 01:17 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-7-20 23:42 发表


有本书你可以看看。

http://www.amazon.com/Pro-ASP-NE ... 11168943&sr=8-2

前两版mvc&mvc2的我看过,相当不错,但这本看它的review好像有点糊弄事,可能作者觉 ...


而我只下载到了 pre release 版的。 你有 full release 的么?
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-7-21 01:19 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-7-21 00:17 发表
18楼的方案虽然OK,但是有些缺陷,比如把函数加到每一行是不应该的,应该指向一个函数名,在那个函数里做具体的实现。
如果更进一步的优化,就是不需要在每一行加事件,如果gridview有100行,那就在每一行上都有onclick=xxxx, 没有必要的,只需要在gridview 上加一个事件就可以了,当然javascript函数本身的代码要多几行,


还是那话。 jQuery 搞定

发表于 2011-7-21 10:20 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-7-21 00:17 发表


而我只下载到了 pre release 版的。 你有 full release 的么?


抱歉,没有

评分

参与人数 1积分 +1 收起 理由
atransformer + 1 这个,可以有

查看全部评分

发表于 2011-7-21 13:14 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 花生 于 2011-7-20 21:11 发表
if you want to use the client side sciprt, you can NOT use NavigateURL as it will cause postback.
the workaround is to use a link in the Text, for example, in the databound event, reformat the "text"  ...


没看懂, 能不能麻烦斑竹写一小段code?
持不同股见者...

发表于 2011-7-21 13:20 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2011-7-21 12:14 发表


没看懂, 能不能麻烦斑竹写一小段code?


他说的就是你找到的那段代码18楼,没必要用button /template,

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部