ASP.NET / DataList:通过单击列表元素进行客户端回发

时间:2008-12-29 10:23:47

标签: asp.net javascript dhtml client-side datalist

我有一个显示一组元素的DataList控件。当用户点击列表中的元素时(例如,列表元素的根目录中的任何位置),任何人都可以指出我正确的方向,即如何添加一些客户端功能来提交/执行回发。我已经通过添加一个隐藏的LinkBut​​ton并将其连接起来看到一些例子 - 但我还没有让它正常工作。

欢呼声,

- larsw


感谢您的帮助 - 我选择了jQuery方法。你知道我是否可以从lambda函数(对于所选项目)调用隐藏的asp:LinkBut​​ton,以便发回帖子?

你的代码示例中有一个小错字(如果有其他人读取此帖子):  我不得不在jQuery选择器中添加一个#; '<%= DataList1.ClientID%> TD'

- larsw

1 个答案:

答案 0 :(得分:5)

没有“客户端回发”之类的东西,这是一个错误的陈述。回发意味着提交到服务器(或外部服务器)。

您真正需要的是在页面中添加一些AJAX方法。这可以通过以下几种方式完成:

  • 的UpdatePanel
  • Pure MS AJAX
  • MS AJAX和jQuery(或其他JavaScript库的混合,我建议使用jQuery,因为它支持VS 2008)

UpdatePanel方法

如果你有一个非常沉重的页面,这不是最好的主意。如果您想获得更多关于注意事项的信息,请查看我写的博客文章 - http://www.aaron-powell.com/blog.aspx?id=1195

如果你不明白限制是什么,简单地把UpdatePanels作为一个危险的选择。

MS AJAX和/或jQuery

这是我对你应该做什么的建议。使用jQuery定位DOM中要放置客户端事件的所有元素,例如:

$('#<%= DataList1.ClientID %> span').click(function () { alert('You want something here'); });

David Ward在使用jQuery和ASP.NET / ASP.NET AJAX方面有一些好的帖子 - http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

注意:如果您要使用AJAX实现,不会访问该页面的控件集合,那么它们都将是静态方法交互,因此请注意如果你想更新页面的多个部分,你需要编写JavaScript方法来做到这一点。