2014-09-25 2 views
0

У меня есть два SqlDataSources, которые относятся к двум dropdownlists. Метод PopulateDLL() позволяет мне заполнить первый раскрывающийся список городами и фильтровать второй раскрывающийся список с названиями улиц, относящихся к этому городу, однако некоторые названия улиц также имеют имена зданий (например, мэрия, главная улица), что я пытаюсь do - это название здания с соответствующими названиями улиц. Я исследовал это и получил кодПопытка объединить два поля в DropDownList

 dt.Columns.Add("StreetName + BuildingName"); 
     ddl_FilteredLocation.DataTextField = "BuildingName"; 
     //ddl_FilteredLocation.DataValueField = ""; 
     ddl_FilteredLocation.DataBind(); 

Однако он по-прежнему вызывает только название улицы, я пробовал разные варианты, а иногда только появится название здания, но без названия улицы, любая помощь с этим было бы здорово, спасибо!

<%-- DS for DDL Location --%> 
<asp:SqlDataSource ID="ds_Location" EnableCaching="false" DataSourceMode="DataSet" runat="server" > 

    ConnectionString="<%$ ConnectionStrings:DataTown %>" 

    SelectCommand="SELECT DISTINCT Town FROM [DataTown].[dbo].[DT] Order By Town"> 
    <asp:SqlDataSource> 

<%-- DS for DDL Street Name, filterExpression is used so that when a user selects a town from ddl_Location the streets for that town are filtered --%> 

<asp:SqlDataSource ID="ds_StreetName" EnableCaching="true" DataSourceMode="DataSet" runat="server" ConnectionString="<%$ ConnectionStrings:DataTown %>" 

     SelectCommand="SELECT Town, BuildingName, StreetName FROM [DataTown].[dbo].[DT] Order By StreetName" FilterExpression="Town = '{0}'"> 


     <FilterParameters> 
      <asp:ControlParameter Name="Town" ControlID="fmv_AccidentHSUData$ddl_Location" PropertyName="SelectedValue" /> 
     </FilterParameters> 
</asp:SqlDataSource> 



    <asp:DropDownList ID="ddl_Location" AutoPostBack="true" Width="100%" runat="server"></asp:DropDownList> 

    <asp:DropDownList ID="ddl_FilteredLocation" DataSourceID="ds_StreetName" DataTextField="StreetName" DataValueField="StreetName" AutoPostBack="true" Width="100%" runat="server"> 


protected void PopulateDDL() 
    { 
     DropDownList ddl_Location = (DropDownList)fmv_DataTown.FindControl("ddl_Location"); 
     DropDownList ddl_FilteredLocation = (DropDownList)fmv_DataTown.FindControl("ddl_FilteredLocation"); 
     ddl_Location.Items.Clear(); 
     DataView view = (DataView)ds_Location.Select(DataSourceSelectArguments.Empty); 
     DataTable dt = view.ToTable(); 
     dt.Columns.Add("StreetName + BuildingName"); 
     ddl_FilteredLocation.DataTextField = "BuildingName"; 
     //ddl_FilteredLocation.DataValueField = ""; 
     ddl_FilteredLocation.DataBind(); 

     foreach (DataRow row in dt.Rows) 
     { 

      string Town = row["Town"].ToString(); 
      //string StreetName = row["StreetName"].ToString(); 
      string FullText = ""; 
      if (Town.Length > 0) 
      { 
       FullText = Town; 
      } 
      else 
      { 

      } 
      ddl_Location.Items.Add(new ListItem(FullText, FullText)); 
     } 
    } 

ответ

0

код под это решение проблемы я имел

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     PopulateDDL(); 
    } 
} 

protected void PopulateDDL() 
    { 
     DropDownList ddl_Location = (DropDownList)fmv_DataTown.FindControl("ddl_Location"); 
     DropDownList ddl_FilteredLocation = (DropDownList)fmv_DataTown.FindControl("ddl_FilteredLocation"); 
     ddl_Location.Items.Clear(); 
     DataView view = (DataView)ds_Location.Select(DataSourceSelectArguments.Empty); 
     DataTable dt = view.ToTable(); 

     foreach (DataRow row in dt.Rows) 
     { 

      string Town = row["Town"].ToString(); 
      string FullText = ""; 
      if (Town.Length > 0) 
      { 
       FullText = Town; 
      } 
      else 
      { 

      } 
      ddl_Location.Items.Add(new ListItem(FullText, FullText)); 
     } 
    } 
Смежные вопросы