解決DropDownList總是選中第一項(xiàng)的方法
在網(wǎng)頁(yè)開(kāi)發(fā)的過(guò)程中,在頁(yè)面中使用了一個(gè) DropDownList 服務(wù)器控件,發(fā)現(xiàn)了一個(gè)很奇怪的問(wèn)題,不論在頁(yè)面中選中哪一項(xiàng),在后臺(tái)獲取到的值總是第一項(xiàng)的值,看了好久也沒(méi)有發(fā)現(xiàn)問(wèn)題出在哪里,DropDownList控件在開(kāi)發(fā)中已經(jīng)使用了無(wú)數(shù)遍了,對(duì)照了其他代碼都是一樣的!
經(jīng)過(guò)了幾分鐘之后,實(shí)在是看不出問(wèn)題在哪里只好到網(wǎng)上查找答案,網(wǎng)上果然有不少人遇到“一樣”的問(wèn)題—— DropDownList 總是選中第一項(xiàng)。網(wǎng)上的解決方法都是說(shuō)在 DropDownList 綁定時(shí)要在 Page_Load 事件要使用 if(!IsPostBack),可是我是這樣綁定的,在網(wǎng)上還是沒(méi)有找到解決的方法。
后來(lái),自己靜靜地左思右想,是不是因?yàn)樽约涸诮壎―ropDownList 的時(shí)候,只給Text 賦值,而沒(méi)有給 Value 賦值導(dǎo)致的呢?接著我就嘗試把每一項(xiàng)的Value 賦值,果然沒(méi)有這樣的現(xiàn)象了!
現(xiàn)在總結(jié) DropDownList 控件總是選中第一項(xiàng)的兩種原因。
情況一,請(qǐng)看下面的代碼:
客戶端代碼:
<asp:DropDownListID="ddl1"runat="server"> </asp:DropDownList>
服務(wù)端代碼:
protected void Page_Load(object sender, EventArgs e) { BindDropDownList(); } private void BindDropDownList() { ddl1.Items.Clear(); //每次綁定前,先清除所有項(xiàng) for (int i = 1; i <= 3; i++) { ListItem item1 = new ListItem(); item1.Text = "第" + i.ToString() + "項(xiàng)"; item1.Value = "第" + i.ToString() + "項(xiàng)"; ddl1.Items.Add(item1); } }
上面代碼案例,也就是網(wǎng)上說(shuō)的總是選中第一項(xiàng)(選擇不能改變選項(xiàng)),綁定方法寫(xiě)在 if (!IsPostBack) 里就可以解決了,代碼如下:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDropDownList(); } }
情況二,即是筆者遇到的,請(qǐng)看下面的代碼:
客戶端代碼:
<asp:DropDownList ID="ddl1" runat="server"> </asp:DropDownList> <asp:Button ID="btnGet" runat="server" Text="獲取" onclick="btnGet_Click" />
服務(wù)端代碼:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindDropDownList(); } } private void BindDropDownList() { ddl1.Items.Clear(); //每次綁定前,先清除所有項(xiàng) for (int i = 1; i <= 3; i++) { ListItem item1 = new ListItem(); item1.Text = "第" + i.ToString() + "項(xiàng)"; item1.Value = ""; ddl1.Items.Add(item1); } } protected void btnGet_Click(object sender, EventArgs e) { string str = ddl1.SelectedItem.Text; Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('" + str + "');</script>"); }
注意 item1.Value 這個(gè)地方,是沒(méi)有賦值的,然而導(dǎo)致獲取 Text 的值錯(cuò)亂了,只要給 Value 賦上值就沒(méi)有問(wèn)題了!
以上就是關(guān)于網(wǎng)上大多數(shù)人遇到“一樣”的問(wèn)題—— DropDownList 總是選中第一項(xiàng)的解決辦法,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 基于Jquery的將DropDownlist的選中值賦給label的實(shí)現(xiàn)代碼
- 深入DropDownList用法的一些學(xué)習(xí)總結(jié)分析
- ASP.NET DropDownListCheckBox使用示例(解決回發(fā)問(wèn)題)
- DropDownList綁定數(shù)據(jù)表實(shí)現(xiàn)兩級(jí)聯(lián)動(dòng)示例
- DropDownList獲取的SelectIndex一直為0的問(wèn)題
- ASP.NET MVC中為DropDownListFor設(shè)置選中項(xiàng)的方法
- JS簡(jiǎn)單操作select和dropdownlist實(shí)例
- C#動(dòng)態(tài)生成DropDownList執(zhí)行失敗原因分析
- DropDownList設(shè)置客戶端事件思路
相關(guān)文章
Asp.net在線備份、壓縮和修復(fù)Access數(shù)據(jù)庫(kù)示例代碼
這篇文章主要介紹了Asp.net如何在線備份、壓縮和修復(fù)Access數(shù)據(jù)庫(kù),需要的朋友可以參考下2014-03-03URL重寫(xiě)及干掉ASP.NET試圖狀態(tài)的實(shí)現(xiàn)方法
URL重寫(xiě)已經(jīng)很普遍了,但基本上大部分的URL重寫(xiě)都不支持頁(yè)面的相對(duì)路徑,所有如果想在已經(jīng)開(kāi)發(fā)好的項(xiàng)目中添加還是有壓力的,第二就是例如微軟的那個(gè)URL重寫(xiě)是根據(jù)正則表達(dá)式來(lái)處理的,那樣是很好,但也有不足之處,就是不方便定位到某個(gè)頁(yè)面只能有哪些參數(shù)2011-11-11ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于ASP.NET Core2靜默獲取微信公眾號(hào)的用戶OpenId的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Asp.Net MVC 分頁(yè)、檢索、排序整體實(shí)現(xiàn)代碼
很多時(shí)候需要這樣的功能,對(duì)表格進(jìn)行分頁(yè)、排序和檢索。本篇文章主要介紹了Asp.Net MVC 分頁(yè)、檢索、排序整體實(shí)現(xiàn),有興趣的可以了解一下。2017-01-01ASP.NET編程簡(jiǎn)單實(shí)現(xiàn)生成靜態(tài)頁(yè)面的方法【附demo源碼下載】
這篇文章主要介紹了ASP.NET編程簡(jiǎn)單實(shí)現(xiàn)生成靜態(tài)頁(yè)面的方法,較為詳細(xì)的分析了asp.net生成靜態(tài)頁(yè)面的步驟與相關(guān)操作技巧,并附帶相關(guān)實(shí)例源碼供讀者下載參考,需要的朋友可以參考下2017-07-07