2012-05-25 90 views
1

我有一點DUH時刻,需要一些幫助。我有一個DropDownList控件,可以在頁面加載時填充值,並提供進一步操作的提交按鈕。但是,單擊按鈕時,DropDownList將返回值「-1」而不是所選選項。這裏有什麼問題?C#動態填充DropDownList重置按鈕OnClick

網頁:

<%@ Page Language="C#" MasterPageFile="/new/MasterPageA2.master" EnableEventValidation="false" AutoEventWireup="true" CodeFile="Checkout.aspx.cs" Inherits="Common_Checkout" EnableViewState="true" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
<asp:UpdatePanel ID="UpdatePanel" runat="server"> 
<ContentTemplate> 

    <asp:Label runat="server" ID="test11"></asp:Label> 
    <asp:DropDownList ID="ddlbillingcountry" required="true" EnableViewState="true" runat="server"></asp:DropDownList> 
    <asp:Button ID="ImageButton1" AlternateText="Proceed" OnClick="ImageButton1_Click" CausesValidation="false" runat="server" /> 

</ContentTemplate> 
</asp:UpdatePanel> 
<asp:UpdateProgress ID="UpdateProgress1" runat="server"> 
    <ProgressTemplate> 
     <p>Loading...</p> 
    </ProgressTemplate> 
</asp:UpdateProgress> 
</asp:Content> 

後面的代碼:

protected void Page_Load(object sender, EventArgs e) { 
    if (!IsPostBack) { 
    PopulateCountry(ddlbillingcountry); 
    } 
} 

private void PopulateCountry(DropDownList Controlname) { 
    DatasetTableAdapters.CountryTableAdapter _CountryTableAdapter = new DatasetTableAdapters.CountryTableAdapter(); 

    Controlname.ClearSelection(); 
    Controlname.Items.Clear();  

    DataTable _DataTable = _CountryTableAdapter._Eco_Country_Select(); 
    Controlname.DataSource = _DataTable; 
    Controlname.DataTextField = "CountryName"; 
    Controlname.DataValueField = "Country"; 
    Controlname.DataBind(); 
    Controlname.Items.Insert(0, new ListItem("- Select Country -", "")); 
} 

protected void ImageButton1_Click(object sender, EventArgs e) { 
    test11.Text += "<p>clicked " + ddlbillingcountry.SelectedIndex + " - " + ddlbillingcountry.SelectedValue.ToString(); 

} 
+0

@TimSchmelter如果從名稱不清楚,我正在填充開票國家/地區。至於需要,看看這裏:http://www.w3schools.com/html5/att_input_required.asp – sbay

+0

因爲我沒有看到這種行爲的明顯原因,並且你的頁面從'Common_Checkout'繼承('Inherits =「 Common_Checkout「在頁面指令中),最有可能在那裏找到的原因。 –

+0

我認爲你已經關閉了上層的視圖狀態。 – Aristos

回答

0

您可以在DataSource屬性設置爲它返回一個數據集的函數的名稱。 嘗試datasource='<%# PopulateCountry("ddlbillingcountry") %>'但您需要更改或重載函數以將參數更改爲字符串,並記住設置datavaluefield和datatextfield。或者您可能需要創建一個單獨的函數並調用沒有參數的函數。

+0

我更新了上面的代碼,以包含在PopulateCountry函數調用中發生的調用。正如你所看到的,它已經使用了DataBinding。 – sbay

+0

@sbay你有任何代碼的下拉列表的onSelectedIndexChanged事件?你能否確認下拉列表不會在回發中重新填充? – angusf