none
關於MVC連動式下拉選單 修改資料的問題 RRS feed

  • 問題

  • 我參考DEMO小鋪的連動式下拉選單做了個地址的連動選單

    但我要做修改會員資料的時候

    卻不知道該如何才能把會員原本選擇的地址

    傳給連動式選單供會員修改

     

    2011年8月16日 上午 09:32

解答

所有回覆

  • 您說的是這個網址嗎?
    http://demo.tc/Post/547

    多傳一個會員地址value做判斷的話呢?

     /// <summary> /// 居住縣市下拉選單 /// </summary> 
      /// <param name="helper"></param> /// 
      /// <param name="ID">選單的ID</param> /// 
      /// <param name="name">選單的name</param> 
      /// <returns></returns> 
    
      public static String GetItemsForDist(this HtmlHelper helper, string ID, string name,string value)
      {
    
       StringBuilder sb = new StringBuilder();
    
       sb.Append("<select name=" + name + " id=" + ID + ">");
       sb.Append("<option value='0'> 縣市 </option>");
       sb.Append("<option value='TaipeiCity'>台北市</option>");
       sb.Append("<option value='KeelungCity'>基隆市</option>");
       sb.Append("</select>");
    
    
    
       if (!string.IsNullOrEmpty(value))
       {
    
        return sb.ToString().Replace("'" + value + "'", "'" + value + "' Selected");
    
       }else
       {
    
    
       return sb.ToString();
       }
      }
    
    
    
      /// <summary> /// 鄉鎮市區下拉選單 /// </summary> 
      /// <param name="helper">
      /// </param> /// <param name="ID">選單的ID</param> 
      /// <param name="name">選單的name</param> /// <returns></returns> 
      public static String GetItemsForArea(this HtmlHelper helper, string ID, string name,string value)
      {
    
       StringBuilder sb = new StringBuilder();
    
       sb.Append("<select name=" + name + " id=" + ID + ">");
       sb.Append("<option value='0' class='sub_TaipeiCity'>行政區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='100'>中正區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='103'>大同區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='104'>中山區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='105'>松山區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='106'>大安區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='108'>萬華區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='110'>信義區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='111'>士林區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='112'>北投區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='114'>內湖區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='115'>南港區</option>");
       sb.Append("<option class='sub_TaipeiCity' value='116'>文山區</option>");
       sb.Append("<option value='0' class='sub_KeelungCity'>行政區</option>");
       sb.Append("<option class='sub_KeelungCity' value='200'>仁愛區</option>");
       sb.Append("<option class='sub_KeelungCity' value='201'>信義區</option>");
       sb.Append("<option class='sub_KeelungCity' value='202'>中正區</option>");
       sb.Append("<option class='sub_KeelungCity' value='203'>中山區</option>");
       sb.Append("<option class='sub_KeelungCity' value='204'>安樂區</option>");
       sb.Append("<option class='sub_KeelungCity' value='205'>暖暖區</option>");
       sb.Append("<option class='sub_KeelungCity' value='206'>七堵區</option>");
       sb.Append("</select>");
    
    
    
    
    
       if (!string.IsNullOrEmpty(value))
       {
    
        return sb.ToString().Replace("'" + value + "'", "'" + value + "' Selected");
    
       }else
        {
       return sb.ToString();
        }
      } 
    
    

     

     


    Shadowと愉快なコード達

    2011年8月16日 上午 10:08
  • 最簡單的方式就是用 jQuery 去指定


    demo小鋪 http://demo.tc/
    2011年8月16日 上午 11:40
  • 用這個方法在縣市可以取到值

    可是後面的就取不到

    區的地方好像還認為縣市還沒被選擇

    所以只有行政區這個選項

     

    2011年8月17日 上午 02:18
  • 能否貼Code上來讓大家研究呢?
    Shadowと愉快なコード達
    2011年8月17日 上午 02:23
  • 可以請問該如何指定嗎?

    小弟對jQuery還不太熟悉

    2011年8月17日 上午 02:33
  • Helper的部份:其實下面還有兩層可是太長所以只放前兩層
    public static string GetItemsForCountry(this HtmlHelper helper, string ID, string name,string value)
        {
          using (AddressEntities db = new AddressEntities())
          {
            StringBuilder sb = new StringBuilder();
            sb.Append("<select name=" + name + " id=" + ID + ">");
            sb.Append("<option value='0'> 國家 </option>");
            foreach (var m in db.Country)
            {
              sb.Append("<option value='" + m.fiId + "'>" + m.fsName + "</option>");
            }
            sb.Append("</select>");
    
            if (!string.IsNullOrEmpty(value))
            {
              return sb.ToString().Replace("'" + value + "'", "'" + value + "' Selected");
            }
            else
            {
              return sb.ToString();
            }
          }
        }
    
        public static string GetItemsForState(this HtmlHelper helper, string ID, string name,string value)
        {
          using (AddressEntities db = new AddressEntities())
          {
            StringBuilder sb = new StringBuilder();
            sb.Append("<select name=" + name + " id=" + ID + ">");
            sb.Append("<option value='0' >州省</option>");
            foreach (var n in db.Country)
            {
              sb.Append("<option class='sub_" + n.fiId + "' value='0'>州省</option>");
              foreach (var m in db.State)
              {
                if (n.fiId == m.fiCountryId)
                {
                  sb.Append("<option class='sub_" + m.fiCountryId + "' value='" + m.fiId + "'>" + m.fsName + "</option>");
                }
              }
            }
            sb.Append("</select>");
            if (!string.IsNullOrEmpty(value))
            {
              return sb.ToString().Replace("'" + value + "'", "'" + value + "' Selected");
            }
            else
            {
              return sb.ToString();
            }
          }
        }
    

    jQuery的部份:

    function makeSublist(country, state, city, zone) {
            
            $("body").append("<select style='display:none' id='" + country + state + "'></select>");
            $('#' + country + state).html($("#" + state + " option"));
            $('#' + state).html("<option value='0'>州省</option>");
            $('#' + country).change(
            function () {
              var parentValue = $('#' + country).attr('value');
              $('#' + state).html($("#" + country + state + " .sub_" + parentValue).clone());
              $('#' + city).html("<option value='0'>城市</option>");
              $('#' + zone).html("<option value='0'>區域</option>");
              if (parentValue == "0") {
                $('#' + state).html("<option value='0'>州省</option>");
              }
            });
          }
    
    view的部份
    <%=Html.GetItemsForCountry("Country", "Country", ViewData["Country"].ToString())%>
            <%=Html.GetItemsForState("State", "State", ViewData["State"].ToString())%>
            <%=Html.GetItemsForCity("City", "City", ViewData["City"].ToString())%>
            <%=Html.GetItemsForZone("Zone", "Zone", ViewData["Zone"].ToString())%>
    



    2011年8月17日 上午 02:48
  • 2011年8月17日 下午 01:28
  • 謝謝你讓我學到不少^^
    2011年8月18日 上午 05:28