1

我有一个 .ascx 页面,上面有一个<asp:ImageButton在单击时调用事件的页面。

我想将其更改为 a<asp:LinkButton并调用相同的事件。

我只能访问 .ascx 文件而不是后面的代码。

我已经考虑将 ImageButton 留在页面上,只是样式为“ display:none;”,并添加 LinkBut​​ton 控件来调用 ImageButton 的事件 - 但我无法获得正确的 JavaScript 语法来完成这项工作。

我欢迎建议。

在这里使用您的建议,我取得了一些不错的进展,谢谢(我对 jQuery 最不熟悉,所以参加了这个 w/e 的速成课程)。

我可以使用以下代码成功触发事件:

jQuery("#jlink").click(function(event){ jQuery('#dnn_ctr594_ViewAjaxModuleWrapper_ctr604_ProductPage_btnAddItem').click(); });

(我并没有说我使用 DotNetNuke 来保持我的问题简单——因此为什么要用 jQuery() 替换 $()。

然而,虽然这可以引用控件的后渲染 ID,但我似乎可以让 <%=btnAddItem%> 工作。我认为(但无法证明)我可以使用 jQuery("select[id$='btnAddItem']") 获得一个选择器,但是用 dnn_ctr594_ViewAjaxModuleWrapper_ctr604_ProductPage_btnAddItem 替换它不起作用。

那么如何动态引用控件对象呢?

最后的想法,谢谢?


错误:从 long int 转换为非标量类型 __gnu_cxx::__normal_iterator

我正在尝试在 Linux (Redhat) 中运行旧的 C++ 代码。我正在使用 gcc 版本 4.1.2。这是我收到错误的代码示例:

           template <class TP> TP *GCVVector<TP>::Find(const TP &Obj)
        {
        #ifdef WIN32
                using namespace std;
                typedef typename vector<TP>::iterator Viterator;
        #else
        #ifdef __HP_aCC 
                using namespace std;
                typedef typename vector<TP>::iterator Viterator;
        #else
                using namespace std;
                typedef typename std::vector<TP>::iterator Viterator;
        #endif
        #endif

                Viterator pCurrent =NULL ;

我得到的错误是这样的:

         /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVVector.h: In member          function âTP* GCVVector<TP>::Find(const TP&) [with TP = GCVAsso<GCVString, GCVString>::KeyNode]â:
        /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVAsso.h:165:   instantiated from âbool GCVAsso<KTP, VTP>::Add(KTP, VTP) [with KTP = GCVString, VTP = GCVString]â
        /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.h:69:   instantiated from here
         /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVVector.h:398: error: conversion from âlong intâ to non-scalar type â__gnu_cxx::__normal_iterator<GCVAsso<GCVString, GCVString>::KeyNode*, std::vector<GCVAsso<GCVString, GCVString>::KeyNode, std::allocator<GCVAsso<GCVString, GCVString>::KeyNode> > >â requested
           /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVAsso.h:165:   instantiated from âbool GCVAsso<KTP, VTP>::Add(KTP, VTP) [with KTP = GCVString, VTP = GCVString]â
        /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.h:69:   instantiated from here
        /trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVVector.h:403: error: no match for âoperator=â in âpCurrent = GCVVector<TP>::BinarySearch [with TP = GCVAsso<GCVString, GCVString>::KeyNode](0l, (GCVVector<TP>::GetSize [with TP = GCVAsso<GCVString, GCVString>::KeyNode]() - 1l), ((const GCVAsso<GCVString, GCVString>::KeyNode&)((const GCVAsso<GCVString, GCVString>::KeyNode*)Obj)))â
        /usr/lib/gcc/x86_64-redhat-   linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_iterator.h:634: note: candidates are: __gnu_cxx::__normal_iterator<GCVAsso<GCVString, GCVString>::KeyNode*, std::vector<GCVAsso<GCVString, GCVString>::KeyNode, std::allocator<GCVAsso<GCVString, GCVString>::KeyNode> > >& __gnu_cxx::__normal_iterator<GCVAsso<GCVString,         GCVString>::KeyNode*, std::vector<GCVAsso<GCVString, GCVString>::KeyNode, std::allocator<GCVAsso<GCVString, GCVString>::KeyNode> > >::operator=(const __gnu_cxx::__normal_iterator<GCVAsso<GCVString, GCVString>::KeyNode*, std::vector<GCVAsso<GCVString, GCVString>::KeyNode, std::allocator<GCVAsso<GCVString, GCVString>::KeyNode> > >&)
        make[2]: ***    [CMakeFiles/GCVCore.dir/trnuser1/rmtrain/DevelopmentEnv/Generic/CoreObjects/GCVTransformationServices.o] Error 1
        make[1]: *** [CMakeFiles/GCVCore.dir/all] Error 2
4

2 回答 2

1

当按下图像按钮时使用JQuery模拟点击链接怎么样?

$('#linkButtonID').click(function(){
    $('#imageButtonID').click();
});

这可能有效

编辑

另外一点 - 如果你不能访问后面的代码,那么将 asp.net webcontrols 放在你的标记上就没有什么意义了。无论如何,您都无法访问服务器端事件和属性,这才是重点。我只想放一个普通的锚标记 - 在 JavaScript 和 JQuery 中使用它会更容易,即

<a href="#" id="linkID">Click this</a>

然后JQuery变成

$('#linkButtonID').click(function(){
    $('#<%=imageButtonID.ClientID%>').click();
});

第一个代码只是为了给你一个想法,但我已经包含了为已经存在的 asp.net Web 控件写出客户端 ID 的想法(如之前的答案),以对比为普通链接编写它

另外 - 不要忘记为此包含 JQuery 库

于 2012-06-22T10:22:03.543 回答
0

解决!

我只是用 ImageButton 的 ID 对选择器进行了通配,而不是尝试以编程方式获取完整的对象引用。

使用的代码如下:

<a href="#" id="jlink" class="txtbutton">Click Here</a>
<asp:ImageButton ID="btnAddItem" runat="server" ImageUrl="jbtn.gif" style="display:none;"></asp:ImageButton>

<script type="text/javascript">

jQuery("#jlink").click(function(event){
jQuery("[id$=btnAddItem]").click();
});

</script>

没有你的帮助是不可能做到的。谢谢!

于 2012-06-25T12:27:46.317 回答