Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp:listview中提取asp:button的clientID以用于jQuery?_C#_Asp.net_Jquery - Fatal编程技术网

C# 如何在asp:listview中提取asp:button的clientID以用于jQuery?

C# 如何在asp:listview中提取asp:button的clientID以用于jQuery?,c#,asp.net,jquery,C#,Asp.net,Jquery,我正在尝试做一些相对简单的事情。我正在使用一个列表视图来显示一些项目,使用ItemTemplate。在ItemTemplate中,我有一个div围绕着完整的项,这样我就可以突出显示悬停事件(已经由jQuery处理) 我想做的是让div上的click事件触发一个按钮来打开该特定项目的详细信息视图。我遇到的问题是,在使用jQuery时,将该按钮的ClientID向后拉。我已经试过了: $('#<%= Button1.ClientID %>') $(“#”) 路由,但这不起作用,因为页

我正在尝试做一些相对简单的事情。我正在使用一个列表视图来显示一些项目,使用ItemTemplate。在ItemTemplate中,我有一个div围绕着完整的项,这样我就可以突出显示悬停事件(已经由jQuery处理)

我想做的是让div上的click事件触发一个按钮来打开该特定项目的详细信息视图。我遇到的问题是,在使用jQuery时,将该按钮的ClientID向后拉。我已经试过了:

$('#<%= Button1.ClientID %>')
$(“#”)
路由,但这不起作用,因为页面加载时按钮不存在

基本代码如下:

<asp:listview>
 <itemtemplate>
  <td runat="server">
   <div class="container">
    <asp:linkbutton id="Button1" runat="server" text="View Details" />
     fun and exciting stuff here...
   </div>
  </td>
 </itemtemplate>
</asp:listview>

有趣和令人兴奋的东西在这里。。。
非常感谢您的任何建议或帮助

将方法连接到ListView的事件。在这里,您可以使用参数属性上的方法为列表中的每个项目获取对该链接按钮的引用。从该引用中,您可以获取ClientID,并使用它执行您需要执行的任何操作

更新
关于对按钮的引用,最简单的方法可能是在ItemDataBound事件中指定click事件,可能类似这样

var button = (Button)e.Item.FindControl("Button1");
button.OnClientClick = "ShowEditDialog(" + Eval("ItemId") + ")";

如果您需要在客户端将其连接起来,也许您可以维护一个将ClientID映射到Item ID的字典,并将该字典发送到客户端,在那里您可以对其进行迭代并将事件连接起来。

为什么不给这些linkbuttons一个特定的css类呢

<asp:linkbutton id="Button1" runat="server" text="View Details" CssClass="detailsButtons" />
如果由于当时没有制作对象而无法使用,则可以在中使用新的
live()
方法。它还会将事件分配给任何动态添加的元素


希望这有助于

如果是您正在处理的单击事件,您不能使用linkbutton的OnClientClick属性吗?或者他们在3.5中删除了它?

您可以使用此语法选择按钮(假设Button1是按钮的服务器id):

这将选择id以“Button1”结尾的所有DOM元素


这是必需的,因为元素的结果客户端id反映了服务器控制结构。

而不是使用scriptlet:

$('#<%= Button1.ClientID %>')
$(“#”)
使用绑定表达式:

$('#<%# Button1.ClientID %>')
$(“#”)
请注意,区别在于#而不是=


绑定表达式在绑定数据时计算,因此表达式将在当前数据项的上下文中计算。Scriptlet在呈现页面时(在页面生命周期的最后)进行评估,并在页面的上下文中进行评估,而不是在特定的数据项中进行评估。

您可以使用cssclass触发偶数点击

<a class="confirm" id="alert" onmouseover="got('<%# Eval("Gift_ID") %>','<%= Session["member_id"] %>')">Redeem Now</a> 

非常有趣的想法,使用live()方法。我可以试一试。类思想的问题是,我需要在特定按钮上触发click()事件,因此一次分配所有按钮无法完成我需要的任务。不过,活的东西可能有用,所以我要试试+1如果项目属于逻辑类,则应将其引用为逻辑类。这正是正确的解决方案(bdukes给出了实际的答案)。虽然您的解决方案一开始似乎有效,但问题是将ClientID注入到页面中,以便我可以在客户端使用jQuery引用它。也许我不明白你的意思?正是我需要的!谢谢你的修复!我已经在ItemTemplate中尝试过,它不适用于ListView。
$('#<%# Button1.ClientID %>')
<a class="confirm" id="alert" onmouseover="got('<%# Eval("Gift_ID") %>','<%= Session["member_id"] %>')">Redeem Now</a> 
$(function() {
        $(".confirm").easyconfirm();
        $(".confirm").click(function() {
            var id = document.getElementById("test").value;
            var mem_id = document.getElementById("test1").value;
            document.getElementById("test").setAttribute("value", "");
            document.getElementById("test1").setAttribute("value", "");
            var param = "{'id':'" + id + "','mem_id':'" + mem_id + "'}"
            $.ajax({

                type: "POST",
                url: "Offer.aspx/Hello_World",
                data: param,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success: function(msg) {
                    alert("hello");
                    $('#myDiv').text(msg.d);

                }
            });

        });

    });