2013-03-12 7 views
0

У меня есть два каскадных выпадающих списка, 1 - родительский, а другой/дочерний элемент заполняется после того, как вы выберете значение в раскрывающемся списке.установить выбранное значение, основанное на родительском значении

Первый загружается при загрузке страницы, и я могу установить выбранное значение для этого значения на основе значения базы данных, которое было сохранено на предыдущей странице.

Для второго каскадного раскрывающегося списка оно заполняется для меня, когда я устанавливаю выбранное значение для родительского идентификатора при загрузке страницы (исходя из значения базы данных).

Но так как выпадение второго/дочернего объекта не задано/не загружено значениями до загрузки страницы, я не могу установить выбранное значение (я попытался на странице_Load_Complete, но он там тоже не работает).

Мне нужно знать, как установить значение выделенного родительского элемента вниз (это прекрасно работает), чтобы заполнить второе падение, основанное на значении в первом.

Вот мой код для страницы aspx. Я могу установить первое выбранное значение, и заселяет второй блок выбора (но я не могу установить выбранное значение, так как он не заполняется в то время я поставил первое выбранное значение.

ASPX страница

<asp:Label ID="lblAffPartCat" Text="<%$ Resources:share,lblAffPartCat %>" runat="server"></asp:Label> 
<asp:DropDownList ID="ddlPartCat" runat="server"></asp:DropDownList> 

<ajaxToolkit:CascadingDropDown ID="CascadingDropDown2" runat="server" TargetControlID="ddlPartCat" 
Category="BasePart" PromptText="<%$ Resources:share,lblSelPartCat %>" LoadingText="[Loading Part Cat...]" 
ServicePath="PAIntExtPart.asmx" ServiceMethod="BindPartCat" 
ContextKey="" UseContextKey="True"/> 

<asp:Label ID="lblAffBasePart" Text="<%$ Resources:share,lblAffBasePart %>" runat="server"></asp:Label> 

<asp:DropDownList ID="ddlBasePart" runat="server" ></asp:DropDownList> 

<ajaxToolkit:CascadingDropDown ID="ddlBasePart_CascadingDropDown" runat="server" Category="BasePart" 
TargetControlID="ddlBasePart" ParentControlID= "ddlPartCat" PromptText="<%$ Resources:share,lblSelBasePart %>" 
LoadingText="Loading Base Parts.." 
ServicePath="PAIntExtPart.asmx" 
ServiceMethod="BindBasePart" 
ContextKey="" UseContextKey="True" /> 

страница asmx.cs, что населяет падение падения:.

using System; 
using System.Collections.Generic; 
using System.Web.Services; 
using System.Data; 
using System.Collections.Specialized; 
using AjaxControlToolkit; 
using Hotline.DataAccess; 

/// <summary> 
    /// Summary description for PAIntExtPart 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService()] 
    public class PAIntExtPart : System.Web.Services.WebService 
    { 
     string _SiteLocation = MiscFunctions.getCurrentSiteLocation(); 

     /// <summary> 
     /// WebMethod to Populate Part Category Dropdown 
     /// </summary> 
     [WebMethod] 
     public CascadingDropDownNameValue[] BindPartCat(string knownCategoryValues, string category, string contextKey) 
     { 
      DataTable dsPartCat = null; 

      // string passed for contextKey is FormType and Language split by ":" 
      string[] arrcontextKey = contextKey.Split(':'); 

      string FormType = arrcontextKey[0].ToString(); 
      int LanguageID = Int32.Parse(arrcontextKey[1].ToString()); 
      string PartCatValue = arrcontextKey[2].ToString(); 

      try 
      {     
       dsPartCat = HarDB.getPartCat(_SiteLocation, LanguageID, FormType); 

       //create list and add items in it by looping through dataset table 
       List<CascadingDropDownNameValue> PartCatdetails = new List<CascadingDropDownNameValue>(); 
       foreach (DataRow dtrow in dsPartCat.Rows) 
       { 
        string PartCatID = dtrow["PartCatID"].ToString(); 
        string PartCat = dtrow["PartCat"].ToString(); 
        PartCatdetails.Add(new CascadingDropDownNameValue(PartCat, PartCatID)); 

       } 

       if (PartCatValue.Trim() != "") 
       {      
        //SelectedValue = PartCatValue; 
       } 

       return PartCatdetails.ToArray(); 

      } 
      catch (Exception ex) 
      { 
       Server.Transfer("Errorpage.aspx?function=getAttachInfo+Error=" + Server.UrlEncode(ex.Message)); 
       return null; 
      } 

     } 

     /// <summary> 
     /// WebMethod to Populate Base Part Dropdown 
     /// </summary> 
     [WebMethod] 
     public CascadingDropDownNameValue[] BindBasePart(string knownCategoryValues, string category, string contextKey) 
     { 
      string PartCatID; 
      //int LanguageID = Int32.Parse(contextKey); 

      string[] arrcontextKey = contextKey.Split(':'); 

      string FormType = arrcontextKey[0].ToString(); 
      int LanguageID = Int32.Parse(arrcontextKey[1].ToString()); 
      string BasePartValue = arrcontextKey[2].ToString(); 

      //This method will return a StringDictionary containing the name/value pairs of the currently selected values 
      StringDictionary PartCatdetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); 

      PartCatID = PartCatdetails["BasePart"]; 


      DataTable dsBasePart = null; 
      try 
      { 
       dsBasePart = HarDB.getBasePart(_SiteLocation, LanguageID, PartCatID, FormType); 

       //create list and add items in it by looping through dataset table 
       List<CascadingDropDownNameValue> BasePartdetails = new List<CascadingDropDownNameValue>(); 
       foreach (DataRow dtrow in dsBasePart.Rows) 
       { 
        string BasePartID = dtrow["BasePartNumID"].ToString(); 
        string BasePart = dtrow["BasePartNum"].ToString(); 
        BasePartdetails.Add(new CascadingDropDownNameValue(BasePart, BasePartID)); 
       } 

       if (BasePartValue.Trim() != "") 
       { 
        //SelectedValue = PartCatValue; 
       } 

       return BasePartdetails.ToArray(); 

      } 
      catch (Exception ex) 
      { 
       Server.Transfer("Errorpage.aspx?function=getAttachInfo+Error=" + Server.UrlEncode(ex.Message)); 
       return null; 
      } 

     } 

    } 
+0

Я редактировал ваш ти TLE. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

0

Я узнал, что моя проблема, я не использовал правильный «Selected Value» при попытке заполнить второй выпадающий

Смежные вопросы