列表框事件未在asp.net的更新面板控件中触发

本文关键字:控件 更新 事件 net asp 列表 | 更新日期: 2023-09-27 18:14:23

我想从数据库加载记录,选择ListBox的SelectedIndexChanged事件。我得到的一切都很好,没有使用更新面板控件在我的形式。现在我想使用更新面板控件,这样我的表单不会回发每次我从列表框中选择一个项目。我试过了,但效果不如预期。请帮助我克服我面临的这个问题。

。aspx代码

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
        <ContentTemplate>
            <asp:ListBox ID="lstTest" runat="server" AutoPostBack="True" Width="450px" OnSelectedIndexChanged="lstTest_SelectedIndexChanged"></asp:ListBox>
           <asp:TextBox ID="txtReport" runat="server"></asp:TextBox>
           <asp:TextBox ID="txtImression" runat="server"></asp:TextBox>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="lstTest" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>

.cs

protected void lstTest_SelectedIndexChanged(object sender, EventArgs e)
{
    int _serviceid = Convert.ToInt32(lstTest.SelectedValue);
    txtReport.Text = string.Empty;
    txtImression.Text = string.Empty;
    SqlConnection con = new SqlConnection(constr);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "[get_rad_results]";
    cmd.Parameters.Add("@ServiceId", SqlDbType.Int).Value = _serviceid;
    cmd.Connection = con;

    try
    {
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            txtReport.Text = dr["Report"].ToString();
            txtImression.Text = dr["Impression"].ToString();
        }
    }
    catch (Exception ex)
    {
        Response.Write("Error occured: " + ex.Message.ToString());
    }
    finally
    {
        con.Close();
        con.Dispose();
    }
}

列表框事件未在asp.net的更新面板控件中触发

也许您确实错过了aspx代码中的脚本管理器 ?我做了一个对我有用的小例子。

<<p> ASPX代码/strong>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"></asp:ListBox>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ListBox1" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

代码后面

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // demo values
        for (int i = 0; i < 10; i++)
        {
            ListBox1.Items.Add("value " + i);
        }
    }
}
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    Debug.WriteLine(ListBox1.SelectedItem);
}

如果我错过了什么请告诉我