【问题标题】:Pass a value and reload User Control from Javascript传递一个值并从 Javascript 重新加载用户控件
【发布时间】:2009-09-17 07:35:12
【问题描述】:

我有一个用户控件(因为我在其他页面中使用相同,所以我认为我应该重用代码而不是重复我的工作),但是在这个页面中我显示了一个公司列表,每个公司都有一个 公司编号,我需要将此公司编号传递给该用户控件,并且它必须使用传递的公司编号重新加载。

我怎样才能做到这一点?

到目前为止我所拥有的:

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 方法中做什么来创建这种行为?

感谢所有帮助,谢谢。

【问题讨论】:

    标签: asp.net javascript jquery asp.net-ajax user-controls


    【解决方案1】:

    我知道这不是你问题的答案,但我认为你可能问错了问题。

    在我看来,好像您有一个搜索结果+详细信息视图场景,您走错了路。

    当您单击“显示公司结构”时,您想在第二个选项卡上查看详细信息吗?如果是这种情况,那么选项卡方法会让用户感到困惑,最好使用显示详细信息的模式弹出窗口。没有回发,只是 AJAX 将带有详细信息的页面加载到模式弹出窗口中。

    使用 JQueryUI 中的对话框小部件和 AJAX 加载函数 $('#SomeDiv').load('details.aspx?id='+companyid);,使用 JQuery 非常容易

    http://docs.jquery.com/Ajax/load#urldatacallback

    它会提供更好的用户体验,而且代码非常简单。

    我希望这会有所帮助。

    【讨论】:

    • 呵呵!有时我们只是喜欢复杂化:)
    【解决方案2】:

    您可以为每个“显示公司结构”链接使用LinkButton,并将CommandArgument 属性设置为对应的公司ID。 LinkButton 将导致回发。

    第二种解决方案是使用隐藏变量:&lt;input type="hidden" id="hiddenCompanyNumber"&gt; 并在 showStruct 方法中设置它的值。然后你可以调用__doPostBack(),我认为你需要一个控件来回发。

    总而言之,我认为第一个解决方案不那么老套。

    【讨论】:

      【解决方案3】:

      你可以在这里找到它

      http://codeclimber.net.nz/archive/2007/06/26/how-to-refresh-an-updatepanel-from-javascript.aspx

      不用担心文章标题它有你需要的东西只需完成四个步骤,你就可以开始了。

      【讨论】:

      • 嗯...有一个隐藏的文本框,就像我正在做的那样,但我无法取回该值,并且在我的页面中页面中没有 updatePanel...但是它让我对这个主题有了新的认识。谢谢。
      • 欢迎您,请告诉我您做了什么来将值张贴在隐藏框中,以便了解您可能无法获得值的原因。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多