Please, consider using updatepanel envolving both controls on the page that uses them, and handling the selectindexchange event on that same page (which will now not postback anymore).
Update:
this is a basic example which makes the second drop down has the first dropdown's value when the latter is selected.
Page:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="dummyweb.WebForm1" %>
<%@ Register Src="~/WebUserControl1.ascx" TagPrefix="uc1" TagName="WebUserControl1" %>
<%@ Register Src="~/WebUserControl2.ascx" TagPrefix="uc1" TagName="WebUserControl2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server"></asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<uc1:WebUserControl1 runat="server" ID="WebUserControl1" OnSelectIndexChanged="WebUserControl1_SelectIndexChanged" />
<uc1:WebUserControl2 runat="server" ID="WebUserControl2" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
PAGE.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace dummyweb
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void WebUserControl1_SelectIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
WebUserControl2.DropDown.SelectedValue = ddl.SelectedValue;
}
}
}
UserControl1
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="dummyweb.WebUserControl1" %>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="item1" Value="1"></asp:ListItem>
<asp:ListItem Text="item2" Value="2"></asp:ListItem>
<asp:ListItem Text="item3" Value="3"></asp:ListItem>
<asp:ListItem Text="item4" Value="4"></asp:ListItem>
</asp:DropDownList>
UserControl1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace dummyweb
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public event EventHandler SelectIndexChanged;
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
SelectIndexChanged(sender, e);
}
}
}
UserControl2
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs" Inherits="dummyweb.WebUserControl2" %>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Text="item1" Value="1"></asp:ListItem>
<asp:ListItem Text="item2" Value="2"></asp:ListItem>
<asp:ListItem Text="item3" Value="3"></asp:ListItem>
<asp:ListItem Text="item4" Value="4"></asp:ListItem>
</asp:DropDownList>
UserControl2.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace dummyweb
{
public partial class WebUserControl2 : System.Web.UI.UserControl
{
public DropDownList DropDown { get { return DropDownList1; } }
protected void Page_Load(object sender, EventArgs e)
{
}
}
}