网站上的三个部份都是用自定义控件实现的:Header,Container,Footer;均放在UpdatePanel里,整个网站都使用异步回传机制.
Header里有一个搜索框:<div id="search">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>                
               <input id="query" size="40" maxlength="2048" value="" type="text" runat="server" />
               <asp:Button ID="SearchButton" runat="server" Text="Search" onclick="Search_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>    
</div>Container里有多个自定义控件,其中一个如下:<asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>                
         <ul:textShow ID="Show1" runat="server" /> ///主要用于显示一些基本信息
      </ContentTemplate>
</asp:UpdatePanel>如何实现点击Header里的搜索,在Container里异步更新搜索出来的信息? 弄蛮久了未解决,请大侠们帮帮忙!

解决方案 »

  1.   

    自已顶下,有类似的方法也可以!
    Hack, Everything!
      

  2.   

    上下两个UpdatePanel  ID都是"UpdatePanel1"。
    看看这种办法 参考
      

  3.   

    对控件的传值,是在页面加载完之后操作的.自定义控件在页面加载时已经有一些默认的内容了,
    就是想通过Header搜索框,在一个自定义控件里异步更新搜索出来的内容!
      

  4.   

    真的是项目给项目找麻烦 为了省事而找事  或者给按钮绑定一个js方法 方法里面就刷新界面就好了  在加载里面刷新下Bind()方法  在bing()多家一步  判断用户是否点击查询 点击了查询就加上查询条件在绑定数据
      

  5.   


    是的,每个部件里都运用了UpdatePanel
      

  6.   

    要么改些2个自定义控件,要么用js ajax 异步更新局部!
      

  7.   

    楼主这样的updatepanel中有一个这样的属性updateMode='Condition'
    就是说要有一个条件来触动这个panel中的刷新而且这个panel中还有一个  <Triggers>
                <asp:AsyncPostBackTrigger ControlID="指定为你的搜索按钮" />
            </Triggers>这样你在搜索按钮事件中对你的text1进行数据源绑定并且实现异步
      

  8.   

    加上了
    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="指定为你的搜索按钮" />
    </Triggers>调试出现下面的错误:
    未能为 UpdatePanel“WidgetBodyUpdatePanel”中的触发器找到 ID 为“SearchButton”的控件。是不是服务器控件生成客户端ID不同?
      

  9.   

    自已顶一下,做了个测试页面,下面的代码是能实现控件间的异步更新,但放到项目中,却出现:未能找到XXX ID的控件的异常.可能是项目中套的控件层太多了! 继续向大侠们请求帮忙!
    protected void Page_Load(object sender, EventArgs e)
        {
            Button bt = (Button)this.Head1.FindControl("SearchButton"); //Head1是一个自定义控件
            bt.Click += new EventHandler(bt_Click);
        }    void bt_Click(object sender, EventArgs e)
        {
            TextBox tb = (TextBox)this.Head1.FindControl("UpdatePanel1").FindControl("query");
            if (tb.Text.Equals("") || tb.Text.Equals(null))
            {
                return;
            }
            else
            {
                USStock.code = tb.Text;
            }        UpdatePanel up = (UpdatePanel)this.WidgetTabHost.FindControl("WidgetBodyUpdatePanel");//WidgetTabHost,自定义控件
            up.Update();            }