列表框事件未在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();
}
}
也许您确实错过了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);
}
如果我错过了什么请告诉我