none
CascadingDropDown SQL 方法錯誤500 RRS feed

  • 問題

  • 請問我有兩個CascadingDropDown 第一個資料正常 , 但是第二個卻方法錯誤500

    程式碼如下:aspx.cs

     

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using Microsoft.ApplicationBlocks.Data;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Web.Services;
    using AjaxControlToolkit;
    using System.Data.SqlClient;
    
    public partial class ajax2 : System.Web.UI.Page
    {
      [WebMethod]
      public static CascadingDropDownNameValue[] GetColorsForModel(string knownCategoryValues, string category)
      {
        //這行是它寫好的東東在AjaxControlToolkit.dll裡面
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
        
        string sqlstring = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["junConnectionString"].ToString();
        //category是來判斷要跑哪個function
        if (category == "c1")
        {
          //從資料庫抓第一個選項的資料
          SqlConnection sqlConn = new SqlConnection(sqlstring);
          sqlConn.Open();
          SqlCommand sqlSelect = new SqlCommand("EXEC dbo.GM_country", sqlConn);
          sqlSelect.CommandType = System.Data.CommandType.Text;
          SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlSelect);
          DataSet myDataset = new DataSet();
          sqlAdapter.Fill(myDataset);
          sqlConn.Close();
    
          List<AjaxControlToolkit.CascadingDropDownNameValue> cascadingValues = new List<AjaxControlToolkit.CascadingDropDownNameValue>();
    
          foreach (DataRow dRow in myDataset.Tables[0].Rows)
          {
            string countryID = dRow["country"].ToString();
            string countryName = dRow["country"].ToString();
            cascadingValues.Add(new AjaxControlToolkit.CascadingDropDownNameValue(countryName, countryID));
          }
          return cascadingValues.ToArray();
     
        }
        if (category == "c2")
        {
          //從資料庫抓第二個選項的資料
          string countryID;
          countryID = kv["country"].ToString();
                  
    
          SqlConnection sqlConn = new SqlConnection(sqlstring);
          sqlConn.Open();
    
          SqlCommand sqlSelect = new SqlCommand("EXEC dbo.GM_city", sqlConn);
          sqlSelect.Parameters.Add("@country", SqlDbType.NVarChar, 255).Value = countryID;
          sqlSelect.CommandType = System.Data.CommandType.Text;
          
          SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlSelect);
          DataSet myDataset = new DataSet();
          sqlAdapter.Fill(myDataset);
          sqlConn.Close();
    
          List<AjaxControlToolkit.CascadingDropDownNameValue> cascadingValues = new List<AjaxControlToolkit.CascadingDropDownNameValue>();
    
          foreach (DataRow dRow in myDataset.Tables[0].Rows)
          {
            string cityID = dRow["city"].ToString();
            string cityName = dRow["city"].ToString();
            cascadingValues.Add(new AjaxControlToolkit.CascadingDropDownNameValue(cityName, cityID));
          }
          return cascadingValues.ToArray();
        
        }
    
      }
    
    
      protected void Page_Load(object sender, EventArgs e)
      {
    
      }
    }
    

     

     

    dbo.GM_city預存程序:

     

    CREATE PROCEDURE dbo.GM_city
    @country nvarchar(255)
    AS
    Select country , city
    From count_school
    where country=@country
    group by country, city
    order by city ASC
    GO
    

     

     

    請問c2哪邊寫錯了呢?

    2010年11月21日 下午 02:55

解答

所有回覆

  • SqlCommand sqlSelect = new SqlCommand("dbo.GM_city", sqlConn);

    sqlSelect.CommandType = System.Data.CommandType.StoredProcedure ;

    2010年11月21日 下午 03:22
    版主
  • 阿尼大哥, 還是一樣方法錯誤500

    我在想是不是第二個參考第一個的country那邊是不是寫錯了?

    2010年11月21日 下午 03:36
  • c2和c1的差異在countryID = kv["country"].ToString();

    自己trace它是不是有值.

    • 已標示為解答 咖啡小豆 2010年11月22日 上午 03:37
    • 已取消標示為解答 咖啡小豆 2010年11月22日 上午 03:37
    • 已標示為解答 咖啡小豆 2010年11月22日 上午 03:37
    2010年11月21日 下午 04:46