2010-04-19 91 views
1

我做了從數據庫中獲取其值的下拉列表,並且在運行應用程序時,該列表無法正常工作,編譯器也沒有看到代碼。已更改下拉列表選定索引

// 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(); 
     } 
    } 

回答

3

檢查列表框是否有屬性AutoPostBack =「True」。

+0

謝謝你,但在其他問題出現數據列表並沒有得到DDL新的值時,DDL選中 – Myworld 2010-04-19 10:52:51

0

你有在頁面指令集AutoEventWireup="true"在您的ASPX頁面的頂部?您需要將此設置設置爲true才能使您的代碼正常工作。

欲瞭解更多信息,請參閱Information about the AutoEventWireup attribute

在Visual Studio .NET或Visual 2005 Studio中,事件綁定到使用事件 委託 事件處理程序方法。如果您使用Web Forms Designer設計Web窗體,則 設計器會自動生成代碼 以將事件綁定到其事件處理程序 方法。

1

你需要加載DLL數據,例如頁面加載,它是空的,所以你的DDL永遠不會改變它的SelectedIndex。

你需要做的是這樣的僞代碼:

Page_load 
{ 
    if(!IsPostBack) 
    { 
     BindData(); 

    } 
} 

BindData() 
{ 
    // Do your DataBase/whatever call to fill the DDL 


} 

和你的保護無效DDlProductFamily_SelectedIndexChanged代碼(對象發件人,EventArgs的)保持不變。

你的DDL還需要屬性的AutoPostBack =「真」

相關問題