我做了下拉列表,从数据库中获取了它的值,在运行应用程序时,它没有工作,编译器也看不到代码。
// aspx
<asp:UpdatePanel ID="UpdatePanel3" runat="server">
<ContentTemplate>
<asp:DropDownList ID="DDlProductFamily" runat="server"
ondatabound="DDlProductFamily_DataBound"
onselectedindexchanged="DDlProductFamily_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="DDlProductFamily" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
// cs
protected void DDlProductFamily_SelectedIndexChanged(object sender, EventArgs e)
{
using (SqlConnection Con = Connection.GetConnection())
{
SqlCommand Com = new SqlCommand("SelectThumbByProductFamily", Con);
Com.CommandType = CommandType.StoredProcedure;
Com.Parameters.Add(Parameter.NewInt("@ProductCategory_Id",
DDlProductFamily.SelectedValue.ToString()));
SqlDataAdapter DA = new SqlDataAdapter(Com);
DA.Fill(dt);
DataList1.DataSource = dt;
DataList1.DataBind();
}
}
答案 0 :(得分:3)
检查列表框是否具有属性AutoPostBack =“True”。
答案 1 :(得分:1)
您需要加载DLL数据,例如,Page Load,它是空的,因此您的DDL永远不会更改其SelectedIndex。
你需要做类似这样的伪代码:
Page_load
{
if(!IsPostBack)
{
BindData();
}
}
BindData()
{
// Do your DataBase/whatever call to fill the DDL
}
您的受保护的void DDlProductFamily_SelectedIndexChanged(对象发送者,EventArgs e)的代码保持不变。
您的DDL还需要属性AutoPostBack =“true”
答案 2 :(得分:0)
您是否在ASPX页面顶部的页面指令中设置了AutoEventWireup="true"
?您需要将此设置设置为true才能使代码正常工作。
有关详细信息,请参阅Information about the AutoEventWireup attribute:
在Visual Studio .NET或Visual中 Studio 2005,事件必然会发生 使用事件的事件处理程序方法 与会代表。如果您使用Web窗体 设计人员设计Web表单, 设计师自动生成代码 将事件绑定到其事件处理程序 方法