2015-06-17 3 views
1

У меня есть этот код aspx, и я настолько смущен для кода asmx.cs.Каскадирование DropDownList с сохраненной процедурой

ASPX:

<div class="col-md-6"> 

<asp:DropDownList ID="ddlMake" runat="server" CssClass="form-control"></asp:DropDownList> 
<ajaxToolkit:CascadingDropDown ID="cdlMake" TargetControlID="ddlMake" PromptText="Select Make" PromptValue="" ServicePath="CascadingDropdown1.cs.asmx" ServiceMethod="GetMakes" runat="server" Category="MakeId" LoadingText="Loading Make..." /> 
    </div> 
<div class="col-md-6"> 
<asp:DropDownList ID="ddlModel" runat="server" CssClass="form-control"></asp:DropDownList> 
<ajaxToolkit:CascadingDropDown ID="cdlModel" TargetControlID="ddlModel" PromptText="Select Model" PromptValue="" ServicePath="CascadingDropdown1.cs.asmx" ServiceMethod="GetModels" runat="server" Category="ModelId" ParentControlID="ddlMake" LoadingText="Loading Model..." /> 
</div> 

и у меня есть Stored Procedure называется Search_MAKE и Search_MODEL и модель SP необходим параметр.

Может кто-нибудь помочь мне построить код asmx.cs.

UPDATE:

[ScriptService] 
public class CascadingDropdown1 : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public CascadingDropDownNameValue[] GetMakes(string knownCategoryValues) 
    { 
     string query = "exec spIBCInventorySearch_MAKE @IDCustomer = 253433"; 
     List<CascadingDropDownNameValue> Makes = GetData(query); 
     return Makes.ToArray(); 
    } 

[WebMethod] 
public CascadingDropDownNameValue[] GetModels(string knownCategoryValues) 
{ 
    string make = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)["MakeId"]; 
    string query = string.Format("exec spIBCInventorySearch_MODEL @VehicleMake = {0}, @IDCustomer = 253433 ", make); 
    List<CascadingDropDownNameValue> Models = GetData(query); 
    return Models.ToArray(); 
} 

private List<CascadingDropDownNameValue> GetData(string query) 
{ 
    string conString = ConfigurationManager.ConnectionStrings["UID=pal;Password=123;DATABASE=ATDBSQL;"].ConnectionString; 
    SqlCommand cmd = new SqlCommand(query); 
    List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     con.Open(); 
     cmd.Connection = con; 
     using (SqlDataReader reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       values.Add(new CascadingDropDownNameValue 
       { 
        name = reader[0].ToString(), 
        value = reader[1].ToString() 
       }); 
      } 
      reader.Close(); 
      con.Close(); 
      return values; 
     } 
    } 
} 

}

я только что закончил делая asmx код, но он сломается в conString части. может кто-нибудь помочь мне отладить эту проблему?

ответ

1

Вы пытаетесь получить строку подключения из файла конфигурации странным образом. Как правило, это ключ в разделе connectionStrings. Например:

<connectionStrings> 
<add name="YourConnectionString" connectionString="Server=WIN-9A0EHHSEC8L\SQLEXPRESS2014;Database=SenseAPIClient;Integrated Security = true;" providerName="System.Data.SqlClient" /> 

Чтобы получить строку подключения к базе данных, что нужно использовать "YourConnectionString". Как следующее:

var conString = ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString; 
+0

где вы получаете справку 'ApiConnectionString'? @qamar –

+1

Вам необходимо установить строку подключения в разделе раздела в файле web.config. Замените мои значения на свои. И в вашем коде вы можете получить строку соединения с помощью установленного вами ключа, в нашем примере это «YouConnectionString». Надеюсь, это имеет смысл. – qamar

+0

спасибо, сэр. возникает больше проблем с после того, как вы исправили часть String соединения. он сломается также в 'values.Add (новый CascadingDropDownNameValue { имя = читатель [0] .ToString(), значение = читателя [1] .ToString() });' –

0
[ScriptService] 
public class CascadingDropdown1 : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public CascadingDropDownNameValue[] GetMakes(string knownCategoryValues) 
    { 
     string query = "exec spIBCInventorySearch_MAKE @IDCustomer = 253433"; 
     List<CascadingDropDownNameValue> Makes = GetData(query); 
     return Makes.ToArray(); 
    } 

[WebMethod] 
public CascadingDropDownNameValue[] GetModels(string knownCategoryValues) 
{ 
    string make = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)["MakeId"]; 
    string query = string.Format("exec spIBCInventorySearch_MODEL @VehicleMake = {0}, @IDCustomer = 253433 ", make); 
    List<CascadingDropDownNameValue> Models = GetData(query); 
    return Models.ToArray(); 
} 

private List<CascadingDropDownNameValue> GetData(string query) 
{ 
    string conString = ConfigurationManager.ConnectionStrings["UID=pal;Password=123;DATABASE=ATDBSQL;"].ConnectionString; 
    SqlCommand cmd = new SqlCommand(query); 
    List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
    using (SqlConnection con = new SqlConnection(conString)) 
    { 
     con.Open(); 
     cmd.Connection = con; 
     using (SqlDataReader reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       values.Add(new CascadingDropDownNameValue 
       { 
        name = reader[0].ToString(), 
        value = reader[0].ToString() 
       }); 
      } 
      reader.Close(); 
      con.Close(); 
      return values; 
     } 
    } 
} 

я просто изменить индекс в value=reader[0].ToString() от 1 до 0 :)

, потому что у меня есть только один столбец в таблице.

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

  • Нет связанных вопросов^_^