ASP.net UpdatePanel有一个panel中动态添加有用户控件,页面加载时正常,textbox筛选刷新后出问题?

//动态添加用户控件NetBarControl到PanelNetBar

  private void AddData()
        {
            PanelNetBar.Controls.Clear();
            MyCommand = new SqlDataAdapter(selectCmd, myConnection);
            ds = new DataSet();
            ds.Tables.Clear();
            MyCommand.Fill(ds, "NetBarInfo");
            ds.Tables["NetBarInfo"].Columns.Add("DaysRemainingofWWDS");
            ds.Tables["NetBarInfo"].Columns.Add("DaysRemainingofRouter");
            for (int i = 0; i < ds.Tables["NetBarInfo"].Rows.Count; i++)
            {
                NetBarControl nc = (NetBarControl)LoadControl("../NetBarControl.ascx");
                nc.ID = "NC"+i;
                nc.NetBarID =Convert.ToInt32(ds.Tables["NetBarInfo"].Rows[i]["ID"]);
                nc.NetBarName = ds.Tables["NetBarInfo"].Rows[i]["NetBarName"].ToString();

                nc.IP = ds.Tables["NetBarInfo"].Rows[i]["WANIP"].ToString().Trim();
                nc.RouterPassword = ds.Tables["NetBarInfo"].Rows[i]["RouterPWD"].ToString().Trim();
                PanelNetBar.Controls.Add(nc);
                nc.MoreClick += new Click_Handler(MoreControl_Clicked);
                nc.RouterClick += new Click_Handler(RouterControl_Clicked);
                nc.EditClick += new Click_Handler(EditControl_Clicked);
                nc.DelClick += new Click_Handler(DelControl_Clicked);
            }
        }

页面加载时是正常的,通过textbox筛选刷新重新添加控件,再点击用户控件中的一个触发事件,取到的值居然是面页加载时控件所在相同位置的控件的值。
用MoreClick事件来测试

private void MoreControl_Clicked(object sender, System.EventArgs e)
{
NetBarControl n = (NetBarControl)sender;
LabelNetBarName.Text = n.NetBarName;
ScriptManager.RegisterStartupScript(this.UpdatePanel3, this.GetType(), "null", "showInfoDiv('" + n.NetBarID.ToString() + "');", true);
}

比如我页面首次加载时第一个用户控件 n.NetBarName是A,textbox值改变刷新执行AddData(),用户控件能正常添加,显示也是正确,就是点击刷新后的第一个用户控件其中的按钮后触发MoreControl_Clicked,取到n.NetBarName的值还是A,明明控件已经改变了,怎么控件取到的值没改变。同理点第二个取到的之前第二个用户控件的。

        protected void Page_Load(object sender, EventArgs e)
        {
            selectCmd = "select * from [NetBarInfo] Order By KeyWord";
            AddDataTable();
        }

           protected void TextBoxSearch_TextChanged(object sender, EventArgs e)
        {
            if (TextBoxSearch.Text.Length != 0)
            {
                string temptempkey = TextBoxSearch.Text.ToString().Trim();
                string pattern = "[\u4e00-\u9fbb]";
                if (System.Text.RegularExpressions.Regex.IsMatch(temptempkey, pattern))//如果字符串包含中文
                {
                    selectCmd = "select  *  from [NetBarInfo] where NetBarName LIKE  '%" + temptempkey + "%' Order By KeyWord";
                }
                else
                {
                    selectCmd = "select  *  from [NetBarInfo] where  KeyWord  LIKE '%" + temptempkey + "%' Order By KeyWord";
                }
            }
            else
            {
                selectCmd = "select * from [NetBarInfo] Order By KeyWord";
            }
            AddDataTable();
        }

没有币了 请大神帮忙看看,谢谢

前端部分代码

 <asp:TextBox ID="TextBoxSearch" runat="server" CssClass="ss-input" Width="212" onkeyup="thisFunc(this)" autocomplete="off" AutoPostBack="true" OnTextChanged="TextBoxSearch_TextChanged" Text="" MaxLength="15"></asp:TextBox>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server"  UpdateMode="Conditional" ChildrenAsTriggers="False">
            <ContentTemplate>
                 <asp:Panel ID="PanelNetBar" runat="server"></asp:Panel>
                        </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="TextBoxSearch" EventName="TextChanged" />
            </Triggers>
        </asp:UpdatePanel>     

感觉是用户控件ID的问题,却不知道怎么解决

https://blog.csdn.net/lee576/article/details/1925519