2011-03-23 69 views
0

我有一個下拉列表ddlTables其中包含我的數據庫中的表名稱,並根據所選表格顯示網格中的表內容。C#.Net:我DropDownlist中的值的重複

我使用下面的代碼填充數據到我的下拉列表上Page_Load事件:

ddlTables.Items.Add("-SELECT-"); 
String getTables = "SELECT TABLE_NAME FROM Information_Schema.Tables where Table_Type = 'BASE TABLE'"; 
MySqlConnection objMyCon10 = new MySqlConnection(strProvider); 
objMyCon10.Open(); 
MySqlCommand cmd10 = new MySqlCommand(getTables, objMyCon10); 
MySqlDataReader r = cmd10.ExecuteReader(); 
while (r.Read()) 
{ 
    ddlTables.Items.Add(r[0].ToString()); 
} 
objMyCon10.Close(); 

當我點擊Go按鈕,它應顯示選定表的表內容。

但按一下Go按鈕,我發現它首先調用Page_Load事件,然後調用btnGo_Click

因此它會複製我的下拉列表中的所有值。

最後,在我點擊Go按鈕後,我的下拉列表中的每個表名都會出現兩次。

如何刪除這些重複的值?

回答

2

嘗試把代碼爲

if(!Page.IsPostBack) 
{ 
    //your code 
} 

+0

感謝羅布·豐塞卡 - 恩索,這很適合我:) – 2011-03-23 11:08:06

1

把你的代碼在

if(!Page.IsPostback) 
{[dropdown filling/binding code here]} 

條件檢查填補了下拉菜單中的項目,這將避免填滿的值再次點擊按鈕時也保留選擇,如果您在下拉列表中選擇了

+0

V4Vendetta:請避免答案重複。無論如何 – 2011-03-23 11:07:37

0

2個選擇:

如果你只需要的項目保持一致,從點你第一次訪問該頁面,然後使用:

if(!Page.IsPostback) { /* bind here */ }; 

如果您需要的值是住在非常刷新頁面,然後禁用控件上的視圖狀態,並且以前的值在回發時不會重新應用到下拉列表。

1

示例程序

if(!IsPostBack) 
{ 
    //Creating Items 
    ListItem li1 = new ListItem("Male", "1"); 
    ListItem li2 = new ListItem("Female", "2"); 
    ListItem li3 = new ListItem("Secret", "3"); 
    //Adding Items to DropDownList 
    DropDownList1.Items.Add(li1); 
    DropDownList1.Items.Add(li2); 
    DropDownList1.Items.Add(li3); 
}