我有一个用户控件(因为我在其他页面中使用相同的,所以我认为我应该重用代码而不是我的工作量加倍),但是在这个页面中我显示了一个公司列表,每个公司都有一个公司编号,我需要将此公司编号传递给该用户控制,并且必须使用该公司编号重新加载。
我该如何做到这一点?
到目前为止:
alt text http://www.balexandre.com/temp/2009-09-17_0917.png
显示公司结构链接由
组成<a href="javascript:showStruct('112:201334607','5564967221');"
class="showStructLink">Show company structure</a>
showStruct 方法就像
一样 function showStruct(pid, cnr) {
if (_showStrut == 0)
return;
// fancy stuff to be more apealing visually
$("#tdSearch").removeClass("tabTitleUp01").addClass("tabTitleDownUp01");
$("#tdStruct").removeClass("tabTitleDownUp02").addClass("tabTitleUp02");
$("#srtr1").hide();
$("#srtr2").hide();
$("#sttr1").show();
// enable Search Results tab to be clicked in order to get back
$("#tdSearch")
.addClass("pointer")
.bind("click", function() { hideStructure(); });
// pass the company number and reload wcCompanyStruture web user control
// __doPostBack('RefreshWebUserControl', cnr);
}
我可以使用内部控件创建一个简单的aspx页面,并从jQuery调用$ .get()来正确运行和填充控件,但我真的想学习如何使用ASP.NET AJAX方法正确地执行此操作发送一个号码并在其上调用RefreshData
使用代码隐藏它很容易刷新用户控件,只需调用
wcCompanyStruture.RefreshData("companyNumberHere");
我需要在用户控制方面做些什么以及在showStruct方法中创建此行为?
感谢所有帮助,谢谢。
答案 0 :(得分:5)
我知道这不是你问题的答案,但我想你可能会问错误的问题。
在我看来,如果您有一个搜索结果+详细信息视图方案,您将采用错误的方式。
当您点击“显示公司结构”时,您想要在第二个标签上看到详细信息吗?如果是这种情况,则选项卡方法会让用户感到困惑,使用显示详细信息的模式弹出窗口会更好。没有回发只是AJAX将带有详细信息的页面加载到模态弹出窗口中。
使用JQueryUI中的对话框小部件和AJAX加载函数$('#SomeDiv').load('details.aspx?id='+companyid);
http://docs.jquery.com/Ajax/load#urldatacallback
它可以提供更好的用户体验,编码也非常简单。
我希望这会有所帮助。
答案 1 :(得分:0)
您可以为每个“显示公司结构”链接使用LinkButton
,并使用相应的公司ID设置CommandArgument
属性。 LinkButton
将导致回发。
第二种解决方案是使用隐藏变量:<input type="hidden" id="hiddenCompanyNumber">
并在showStruct
方法中设置它的值。然后你可以调用__doPostBack()
,你需要一个控制权来回复我认为。
总而言之,我认为第一种解决方案不那么苛刻。
答案 2 :(得分:-2)
你可以在这里找到它
http://codeclimber.net.nz/archive/2007/06/26/how-to-refresh-an-updatepanel-from-javascript.aspx
不要担心它有你需要的文章标题只需做四个步骤就可以了。