Hi.kylen
I worked it out,the following codes works cool,No problem at all!
I specified the UserControl custom event "TextID_Clicked" as a Trigger for update panel on Parent page.
BTW,Another sulotion is mentioned at Trigger PostBack to an UpdatePanel from a separate UserControl?
uctextlist.ascx :
<%@ Control Language="C#" ClassName="uctextlist" %>
<script runat="server">
public delegate void ClickEventHandler(object sender, CommandEventArgs e);
public event ClickEventHandler TextID_Clicked;
private ArrayList ar = new ArrayList();
public ArrayList VSar
{
set
{
ar = value;
}
get
{
return ar;
}
}
public void LoadLink()
{
Repeater1.DataSource = ar;
Repeater1.DataBind();
}
protected void lb_Command(object sender, CommandEventArgs e)
{
if (TextID_Clicked != null) TextID_Clicked(this, e);
}
</script>
<div style="overflow:auto; width:100px; height:100px">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="background-color:Gray">
<asp:LinkButton ID='b1' runat="server" CommandArgument='<%# Container.DataItem %>' OnCommand="lb_Command"><%# Container.DataItem %></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td>
<asp:LinkButton ID='b2' runat="server" CommandArgument='<%# Container.DataItem %>' OnCommand="lb_Command"><%# Container.DataItem %></asp:LinkButton>
</td>
</tr>
</AlternatingItemTemplate>
<SeparatorTemplate>
<tr>
<td>
-----------------------------------------------------------------</td>
</tr>
</SeparatorTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
uctextdetail.ascx:
<%@ Control Language="C#" ClassName="uctextdetail" %>
<script runat="server">
public String TextBox1Text
{
get
{
return TextBox1.Text;
}
set
{
TextBox1.Text = value;
}
}
</script>
<asp:Label ID="Label1" runat="server" Text="Detail:"></asp:Label><br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
Default29.aspx:
<%@ Page Language="C#" %>
<%@ Register Src="uctextlist.ascx" TagName="uctextlist" TagPrefix="uc1" %>
<%@ Register Src="uctextdetail.ascx" TagName="uctextdetail" TagPrefix="uc2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void cboSystem_SelectedIndexChanged(object sender, EventArgs e)
{
cboTextType.Items.Clear();
cboTextType.Items.Add(new ListItem("", "0"));
for (int i = 1; i < 4; i++)
{
ListItem item = new ListItem(cboSystem.SelectedItem.Text + i.ToString(), i.ToString());
cboTextType.Items.Add(item);
}
cboTextType.SelectedIndex = 0;
}
protected void cboTextType_SelectedIndexChanged(object sender, EventArgs e)
{
cboAttribute.Items.Clear();
cboAttribute.Items.Add(new ListItem("", "0"));
for (int i = 1; i < 4; i++)
{
ListItem item = new ListItem(cboTextType.SelectedItem.Text + i.ToString(), i.ToString());
cboAttribute.Items.Add(item);
}
cboAttribute.SelectedIndex = 0;
}
protected void btnSearch_Click(object sender, EventArgs e)
{
//myTextList.Controls.Clear();
//myTextList.VSht = null;
myTextList.VSar.Clear();
for (int i = 1; i < 4; i++)
{
myTextList.VSar.Add(i.ToString() + " " + cboSystem.SelectedItem.Text + "_" + cboTextType.SelectedItem.Text + "_" + cboAttribute.SelectedItem.Text + " ");
//myTextList.AddLinkButton(i.ToString() + " " + cboSystem.SelectedItem.Text + "_" + cboTextType.SelectedItem.Text + "_" + cboAttribute.SelectedItem.Text + " ");
}
myTextList.LoadLink();
myTextList.Visible = true;
}
protected void myTextList_TextID_Clicked(object sender, CommandEventArgs e)
{
myTextDetail.TextBox1Text = e.CommandArgument.ToString();
myTextDetail.Visible = true;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="updateSearch" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
<asp:DropDownList ID="cboSystem" runat="server" AutoPostBack="True" OnSelectedIndexChanged="cboSystem_SelectedIndexChanged">
<asp:ListItem Value="1" Selected="True">test1</asp:ListItem>
<asp:ListItem Value="2">test2</asp:ListItem>
<asp:ListItem Value="3">test3</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="cboTextType" runat="server" AutoPostBack="True" OnSelectedIndexChanged="cboTextType_SelectedIndexChanged">
<asp:ListItem Value="0" Selected="True"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="cboAttribute" runat="server">
<asp:ListItem Value="0" Selected="True"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="cboSystem" EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="cboTextType" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="updateList" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
<uc1:uctextlist ID="myTextList" Visible="false" runat="server" OnTextID_Clicked="myTextList_TextID_Clicked" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdatePanel ID="updateDetail" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<uc2:uctextdetail ID="myTextDetail" Visible="false" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="myTextList" EventName="TextID_Clicked" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
Let me know if you need more info.
Sincerely,
Jin-Yu Yin