C# 更新控件中的列表框不';t返回正确的选定值

C# 更新控件中的列表框不';t返回正确的选定值,c#,listbox,updatepanel,C#,Listbox,Updatepanel,我正在使用带有母版页的Web表单。 在网络表单上,我有一个更新面板。里面是一个列表框,由数据表加载。我让列表自动回发,在SelectedIndexChanged上,无论我选择了什么,它都会返回第一个项目。 我注意到如果我在.aspx页面上列出这些项目,它将返回正确的值。 我不知道发生了什么事 <asp:Content ID="SearchBodyContent" ContentPlaceHolderID="MainContent" runat="server" EnableViewStat

我正在使用带有母版页的Web表单。 在网络表单上,我有一个更新面板。里面是一个列表框,由数据表加载。我让列表自动回发,在SelectedIndexChanged上,无论我选择了什么,它都会返回第一个项目。
我注意到如果我在.aspx页面上列出这些项目,它将返回正确的值。 我不知道发生了什么事

<asp:Content ID="SearchBodyContent" ContentPlaceHolderID="MainContent" runat="server" EnableViewState="true">
 <asp:UpdatePanel ID="parentup" runat="server" UpdateMode="Conditional">
<ContentTemplate>
    <asp:UpdatePanel ID="childup1" UpdateMode="Conditional" runat="server">
        <ContentTemplate>

            <asp:ListBox ID="list" runat="server" AutoPostBack="true" OnSelectedIndexChanged="list_SelectedIndexChanged" DataTextField="title" DataValueField="type">
            </asp:ListBox>
            <asp:TextBox runat="server" ID="text" Visible="false"></asp:TextBox>
        </ContentTemplate>
        <Triggers>
           <asp:AsyncPostBackTrigger ControlID="list" EventName="SelectedIndexChanged" />
            </Triggers>
    </asp:UpdatePanel>
</ContentTemplate>

我真的需要得到实际选定的项目。有人能帮忙吗?

我意识到问题在于我的datavaluefield不是唯一的

我意识到问题只是我的datavaluefield不是唯一的

ListBox位于子更新面板中,可能是它触发了父更新面板,并且更改的值没有正确发回,请尝试将ChildrenAsTriggers=“False”添加到父更新面板。已尝试。不起作用。我可以按原样运行您的代码,没有问题,您可以显示web表单的整个Html吗?Html中唯一没有显示的部分是site.master的部分。当我从数据库加载时,它在第一次单击列表框时起作用,但第二次以及随后的几次似乎几乎是随机的。如果我在c#中创建表,它可以正常工作。我开始认为,多年前有人所做的大量代码背后可能有某种东西在搞乱这件事。谢谢您的帮助,但我已经放弃了这种方法。ListBox位于子更新面板中,可能是它触发了父更新面板,并且更改的值没有正确地发回,请尝试将ChildrenAsTriggers=“False”添加到父更新面板。尝试了。不起作用。我可以按原样运行您的代码,没有问题,您可以显示web表单的整个Html吗?Html中唯一没有显示的部分是site.master的部分。当我从数据库加载时,它在第一次单击列表框时起作用,但第二次以及随后的几次似乎几乎是随机的。如果我在c#中创建表,它可以正常工作。我开始认为,多年前有人所做的大量代码背后可能有某种东西在搞乱这件事。谢谢你的帮助,但我已经放弃了这种方法。
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        using (SecureData sd = new SecureData(true, UserManager.GetLoginToken(true)))
        {
            _dt = sd.GetData("web_searchcriteria_item_listKK", "", 0, 0).Tables["web_searchcriteria_item_listKK"];

            list.DataSource = _dt;
            list.DataBind();
            list.Items.Insert(0, "Select One");
            Session["criteria"] = _dt;
        }
    }
}

protected void list_SelectedIndexChanged(object sender, EventArgs e)
{
    string title = list.SelectedItem.Text;
    text.Visible = true;

}