2014-12-08 70 views
1

我希望點擊一個按鈕後保存我選擇的索引,以便將該號碼存儲到我的數據庫中。我的下拉列表在下面的評論中。如何在asp.net中保存下拉列表選擇的索引?

使用查詢填充下拉列表。到目前爲止,它的作用是在點擊按鈕後存儲第一個索引(即0),即使我想保存另一個索引。

我已經做了一些研究,到目前爲止我無法解決它,希望有人能幫助我。

代碼下拉列表: -

<asp:DropDownList ID="ddlCategory" runat="server" Height="25px" Width="428px" Font-Size="Large"> </asp:DropDownList> 

這裏就是我如何填寫下拉列表

ClsUtil clsutil = new ClsUtil(); 
DataSet ds = clsutilerias.FillDDL(Category); 
ddlCategory.DataTextField = ds.Tables[0].Columns["Name"].ToString(); 
ddlCategory.DataValueField = ds.Tables[0].Columns["Category_ID"].ToString(); 
ddlCategory.DataSource = ds.Tables[0]; 
ddlCategory.DataBind(); 
+0

asp:DropDownList> – appleduardo 2014-12-08 07:08:45

+0

請寫出代碼.. – Dhaval 2014-12-08 07:08:48

+0

@appleduardo:請顯示您的jQuery代碼。 – BNN 2014-12-08 07:18:01

回答

0

當你點擊按鈕,整個頁面被刷新這就是爲什麼你拿到了第一個索引所有的時間 最好的解決辦法是:

if(IsPostBack == false) 
{ 
//Save your data code here 
} 

您有其他棘手的解決方案是: 把dropboxmenu放在更新面板控件中

0

雖然結合數據源連擊,提DataMemberDataValue屬性組合框以便從組合中選擇元素selectedValue作爲DataValue

1

DropDownList有屬性。您需要正確設置SelectedIndex,SelectedItemSelectedValue(並且在與綁定等相關的正確事件中)。

編輯:也許你更新你的問題,也許我誤解,但無論哪種方式現在看來,你不想設置SelectedIndex可能高達得到SelectedIndex。即便如此,如果您閱讀文檔並查看鏈接中提供的示例,則應該有足夠的信息來知道該做什麼。

基本上,當數據回發到服務器時,客戶端上的<select>中的<option>元素之一(HTML代碼)將被選中。如果您的<asp:DropDownList>AutoPostBack="True",您可以在OnSelectedIndexChanged事件中進行回調,但也有其他方式,有或沒有自動回傳。 (您根本不需要視圖狀態,甚至根本不需要視圖狀態,但可以通過以任何適合您的需求或偏好的方式提交表單數據來觸發POST,然後讀取您對服務器端感興趣的任何值。 )

您似乎找到了解決方案,檢查Page中的IsPostback,如果值爲true,則不會重新填充列表。那很好。 如果每次渲染頁面(即使在POST之後)都不需要進行數據綁定,那麼這是一個可行且常見的解決方案。

當然,另一種選擇是在執行數據綁定之前讀取發生的任何事件發生的數據。如果您不喜歡讓ASP.NET爲您完成,您可能還需要處理SelectedIndex的值,以便在重新填充後,在下拉框中重新選擇正確的選項。

+0

我已經使用這樣的綁定: ddlCategory.DataBind(); 但那究竟意味着什麼? – appleduardo 2014-12-08 07:17:27

+0

[BaseDataBoundControl.DataBind方法](http://msdn.microsoft.com/en-us/library/zd7t67ef%28v=vs.100%29.aspx)。 – 2014-12-08 07:22:59

0

那麼我已經解決了我的問題,我的問題是,當我點擊按鈕,pageLoad方法再次執行,並且有我的代碼填充我的下拉列表中。所以我只是說:

if(!IsPostBack) 
{ 
//here goes the code to fill the Drop down list 
}