Q:

asp.net multiple updatepanel usercontrol

So, I have a usercontrol with an update panel. 
I also put a button for updating the panel on my control.
I include this control 2 times (or more) in a page.
I want update only one of them but when I use the button, both panel is updated.
control ascx
    <script type="text/javascript">
  function bt_click()
  {        
     __doPostBack('UpdatePanel1', 'post');
     return false;
  }
  </script>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:HiddenField runat="server" ID="HiddenField1" Value="false" />
            <div>
                <asp:Label ID="Label1" runat="server" Text="Val"></asp:Label>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

control .vb
protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Label1.Text = DateTime.Now.Ticks.ToString();
        }
    }

webform.aspx
<form id="form1" runat="server">
<div>
    <asp:Button runat="server" ID="bt" OnClientClick="bt_click" />
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    &nbsp;
    <asp:Label ID="Label1" runat="server" Text="Val"></asp:Label>
    <div>
        <My:MyControl ID="MyControl1" runat="server" />
    </div>
    <br />
    <div>
        <My:MyControl ID="MyControl2" runat="server" />
    </div>
</div>
</form>

webform.vb
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            Label1.Text = DateTime.Now.Ticks.ToString();
    }

A:

EDIT FOR WORKING SOLUTION:
Here's what the error is: Your Button1 is outside of the UpdatePanels, thus posting back your page and all the controls with it.  Hence both of them being updated.  You can't add the button in the Triggers section of your control, because obviously the control doesn't know about it.  So what you have to do is register that button as an Asynchronous PostBack Control.  Here's what I did:
TestControl.ascx:
Note: I had to add UpdateMode="Conditional" to the UpdatePanel, which yours did not have. By default, UpdateMode is set to Always, and that would cause us further issues.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TestControl.ascx.cs" Inherits="Controls_TestControl" %>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:HiddenField runat="server" ID="HiddenField1" Value="false" />
        <div>
            <asp:Label ID="Label1" runat="server" Text="Val"></asp:Label>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

TestControl.ascx.cs:
Note: I added UpdatePanel() as a property to get around needing to use your __doPostBack() calls in jQuery and I can easily access this from the parent page in the click event handler.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Controls_TestControl : System.Web.UI.UserControl
{

    public UpdatePanel UpdatePanel() { return UpdatePanel1; } 

    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            Label1.Text = DateTime.Now.Ticks.ToString();
        }
    }
}

Test.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register TagPrefix="uc" TagName="TestControl" Src="~/Controls/TestControl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Fire UpdatePanel1" />
        <asp:Label ID="Label1" runat="server" Text="Val"></asp:Label>
        <br /><br />
        <uc:TestControl ID="TestControl1" runat="server" />
        <br />
        <uc:TestControl ID="TestControl2" runat="server" />
    </form>
</body>
</html>

Test.aspx.cs:
Note: Here is where I registered Button1 in the Page_Load with ScriptManager1.RegisterAsyncPostBackControl(Button1);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager1.RegisterAsyncPostBackControl(Button1);

        if (!IsPostBack)
        {
            Label1.Text = DateTime.Now.Ticks.ToString();
        }
    }

    protected void Button1_Click(object sender, EventArgs e) 
    {
        TestControl1.UpdatePanel().Update();
    }

}

