![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Sanji ![]()
![]() |
小弟目前有兩個相關的dropdownlist 我希望當第一個dropdownlist(艙位)選擇第五個選項時 第二個dropdownlist(票種)可以自動產生預設值 不用選擇就可以變成第五個選項 以下是網頁兩個相關的dropdownlist 的code <td align="center">艙 等</td> <asp:DropDownList ID="ddlCabinLevel" runat="server" OnSelectedIndexChanged="ddlCabinLevel_SelectedIndexChanged" AutoPostBack="true" /> <asp:RequiredFieldValidator id="rv3" ControlToValidate="ddlCabinLevel" Display="Dynamic" runat="server" Text="請選艙等" CssClass="validate_msg" ValidationGroup="Edit" /> <td align="center">票 種</td> <asp:DropDownList ID="ddlTicketID" runat="server" OnSelectedIndexChanged="ddlTicketID_SelectedIndexChanged" AutoPostBack="true" /> 而相對應的函式code如下 protected void ddlCabinLevel_SelectedIndexChanged(object sender, EventArgs e) { GetTicketIDs(); SetControlFocus(ddlCabinLevel.ClientID, false); } protected void ddlTicketID_SelectedIndexChanged(object sender, EventArgs e) { GetTicketIDs(); SetControlFocus(ddlTicketID.ClientID, false); } private void GetTicketIDs() { OrderDetailInfo od = OrderDetail; IDataReader dr = OrderBLL.GetTicketPrices(ddlCabinLevel.SelectedValue, od.From_place, od.To_place, departDate, ComID, Globals.ConnectionString); //custId :身分證字號(txtIDNo) string custId = txtIDNo.Text.Trim(); string lastTicketId = ""; //找出訂票的ticket_id if (!string.IsNullOrEmpty(custId)) lastTicketId = OrderBLL.lastTicketOrderedForWaiting(custId, od.From_place, od.To_place, Globals.ConnectionString); string selectedValue = ddlTicketID.SelectedValue; ddlTicketID.Items.Clear(); ListItem item; while (dr.Read()) { string ticketID = dr["ticket_id"].ToString(); item = new ListItem(string.Format("{0}-{1}-{2}", dr["obj_key"], dr["obj_name"], dr["price"]), ticketID); if (ticketID == lastTicketId) { item.Selected = true; } if (ticketID == selectedValue) item.Selected = true; ddlTicketID.Items.Add(item); if (ticketID == "01") AdultPrice = Convert.ToInt32((long)dr["price"]); } dr.Close(); if (ddlTicketID.Items.Count == 0) //throw CreateNewException("查無票種!"); { ShowMessage("查無票種!", true); return; } SetPrice(); } 我做了很多其中的判斷 可是都會報錯 所以我真的沒找到該怎麼改它 就上來請問各位大大 |
1樓
作者回應
Sanji ![]() |
重新排版看看~
本篇文章回覆於2017-09-08 21:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
如果要用PostBack的話,
你要去了解它的流程, 我實際run過發現會先從Page_Load開始跑, 不是只跑那個OnChange事件而已, 最好是一步一步debug去發現問題, 或是也可以用前端JavaScript的方法, 不用到後端。
本篇文章回覆於2017-09-08 23:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
Sanji ![]() |
請問小魚大大
那如何用用前端的方法 是單純加條件如此嗎
本篇文章回覆於2017-09-09 00:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
Sanji ![]() |
因為主要 在GetTicketIDs()這裡面
item就是要呈現出來的資料 我就想說有沒有辦法 讓item的其中一個值變成預設
本篇文章回覆於2017-09-09 01:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
目前不是很了解你的需求,
可以舉個具體的例子嗎?
本篇文章回覆於2017-09-09 08:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
Sanji ![]() |
就是現在有兩個dropdownlist
第一個ddl 選項假設有五個 而第二個ddl 的選項會根據第一個ddl來決定總共有幾個(而預設都是第一個) 我希望能呈現的是 當第一個ddl選第五個選項時 第二個ddl 抓完所有選項值後 預設先設為第五個
本篇文章回覆於2017-09-09 11:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
1.所以第二個選項來源是哪裡?來自資料庫?
2.所以你已經可以抓資料庫的資料了嗎? 3.前端改變下拉選單的方式可參考 動態下拉式選單 試試看 4.如果要從後端改變,可以參考 下拉選單DropDownList範例 5.另外還有這一篇,應該可以解決你的問題 DropDownList小技巧 6.針對語法部分還有問題,可以善用Google
本篇文章回覆於2017-09-09 15:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓
作者回應
Sanji ![]() |
回小魚大大
1.資料庫 2.已經抓得到了 謝謝小魚大大的回覆 我會看的
本篇文章回覆於2017-09-09 18:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
Sanji ![]() |
回小魚大大
1.資料庫 2.抓得到資料了 3.5我再看看 4. 那篇我參考過了 可是 appenddatabounditems 這個指令會對第一個ddl的所有選項作預設 我只要第一個ddl選到第五個選項 才讓第二個ddl做預設
本篇文章回覆於2017-09-09 18:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓 |
如果你只要第五個,
那就要在 OnSelectedIndexChanged 的事件裡面加入判斷
本篇文章回覆於2017-09-09 21:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |