2015-06-17 49 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 ProcedureSearch_MAKESearch_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

謝謝先生。修復連接字符串部分後,還有更多問題。這也將打破在'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 :)

,因爲我只有1在表列。