2013-01-18 177 views
1

我在ASP.net中添加了DropDownList。DropDownList將所選項目設置爲true

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" > 
<asp:ListItem Text="Name" Value="jsh" Selected="true" /> 
<asp:ListItem Text="hhh" Value="sds"/> 
</asp:DropDownList> 

而是在ASP.net說Selected="true"我想用C#的

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList1 // THE SELECTED ITEM NEEDS TO BE SET TO TRUE 
    Response.Redirect(Request.RawUrl); 
} 

UPDATE裏面設置所選項目

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" OnTextChanged="DropDownList1_onChanged"> 

</asp:DropDownList> 

C#

protected void Page_Load(object sender, EventArgs e) 
{ 

    if(!Page.IsPostBack) 
{ 
    DropDownList1.Items.Add(new ListItem("En", "en-US")); 
    DropDownList1.Items.Add(new ListItem("Fr", "fr-FR")); 
} 

} 

//我也copie d InitializeCulture()

protected override void InitializeCulture() 
{ 

string Kultur = "en-US"; 
if (Session["lang"] != null) 
{ 


    Kultur = Session["lang"].ToString(); 
} 


this.UICulture = Kultur; 
this.Culture = Kultur; 
base.InitializeCulture(); 


} 

//

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
DropDownList1.Items.FindByValue(DropDownList1.SelectedValue).Selected = true; 
    Response.Redirect(Request.RawUrl); 
} 
+3

你的問題沒有意義。如果用戶選擇它,它已被選中。所以我假設你實際上想設置一個底層記錄的字段爲'true',但我們不知道你的模式,rdbms等。 –

+0

沒有涉及到數據庫。我正在刷新SelectedIndexChanged方法中的頁面。所以我需要將選定的值設置爲true,以便在UI中受到影響。否則當我刷新時,我將不會得到選定的值,但默認值將被選中 –

+0

如果您設置了AutoPostBack =「True」,則您不必親自刷新頁面。 PostBack不會清除DropDownList中的所選值。 –

回答

4

其實,你的問題使亙古SENCE。如果用戶選擇它,它已被選中。刷新頁面時,DropDownList1將再次加載值。所以,你的DropDownList1選擇的項目將失去

你可以這樣做,

aspx文件

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 
    </asp:DropDownList> 

aspx.cs文件

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) 
     { 
      DropDownList1.Items.Add(new ListItem("Name", "jsh")); 
      DropDownList1.Items.Add(new ListItem("hhh", "sds")); 
     } 
    }  

下面的代碼是選擇項目

DropDownList1.Items.FindByValue(DropDownList1.SelectedValue).Selected = true; 

DropDownList1.Items.FindByText(DropDownList1.SelectedItem.Text).Selected = true; 

DropDownList1.SelectedItem.Selected = true; 
+0

但是在我刷新頁面後,它仍然顯示DropDownList的索引0。我怎樣才能防止這個? –

+0

因爲你必須在viewstate中設置ddl值。每次刷新頁面時,ddl值都會重置。 –

+0

我該怎麼做? –

0
DropDownList1.SelectedValue = "value"; 

Or 

DropDownList1.SelectedIndex= 1; 
+0

名稱值在當前上下文中不存在。如何解決這個問題? –

+0

現在什麼是索引?我怎麼能在這裏得到索引? –

+0

你應該給你想要設置的項目的值或索引爲真 – sreejithsdev

0

您還可以通過這種方式選擇。

if (ddl.Items.FindByValue("value") != null && !string.IsNullOrEmpty("value")) 
{ 
    ddl.Items.FindByValue("value").Selected = true; 
} 
相關問題