從資料庫中獲取值填入下拉列表,然後做二級關聯所產生的一系列問題
今晚因為需要研究jquery動態繫結兩個下拉列表框,並且使兩個下拉列表框聯絡起來,所以做了下小例子
首先,建立了兩張表
每個表裡包含兩個欄位,一個id,一個名字
插入了一些資料,兩張表通過ID進行關聯,這是資料庫的做法
然後CS檔案中寫的程式碼如下:
public partial class _Default : System.Web.UI.Page
{
public string Json = "";
protected void Page_Load(object sender, EventArgs e)
{
Json =JsonConvert.SerializeObject(getData(), new DataTableConverter());
}
public DataSet getData()
{
string constr = ConfigurationManager.ConnectionStrings["Constr"].ToString();
SqlConnection conn = new SqlConnection(constr);
conn.Open();
string conname = "select * from tb_pro";
DataSet ds = new DataSet();
SqlDataAdapter adpter = new SqlDataAdapter(conname, conn);
adpter.Fill(ds);
return ds;
}
}
寫到這裡的時候出現了一些小問題,說一下,第一個寫webconfig檔案時,用的是connectionString,然後獲取的時候用成了appsettings,所以報錯了,研究了好大一會。並且連結字串寫錯資料庫了,粗心是萬萬要不得的。
第二個,後臺向前臺傳值的時候的,要繫結資料,前臺不會寫了,網上各種搜資料, <%=Json%>,前臺要這樣寫,沒有驗證
<%:Json%>,並且後臺的Json必須宣告為public ,如上程式碼所示,然後前臺才能讀取到,否則的話會一直提示Json不存在。
第三個,後臺當時返回的是一個值,因為是下拉列表框,所以就要返回一組值,然後就找了各種方法,發現用json進行轉換是比較方便的,於是下載了一個Newtonsoft.Json.dll檔案,引入,然後前邊要加
using Newtonsoft.Json;
因為用了一個
Json =JsonConvert.SerializeObject(getData(), new DataTableConverter());,
所以還要加
using Newtonsoft.Json.Converters;
當然不加就要在下邊寫出來了。還有自己手動轉換,不過這個很簡單。
前臺Jquery還沒有找到跟公司類似的方法,因為在網上看了那麼多例子,還是發現公司的最簡單,所以明天會繼續寫,前臺解析json,最後才做兩個下拉列表關聯。很晚了,要睡覺了。明天繼續更新
接著更新
講述方法後臺返回一個JSON,前臺操作
後臺傳送了一個JSON格式的資料,前臺就要接受這個資料,用
後臺的話要用傳值,就要return JSON了,
據我的理解是data是後臺傳值過來的Json,然後接著用
$.each()方法進行反序列化,如果要支援IE6以上呢,就用for迴圈
如圖片中的each和for迴圈
(注:圖片中的ajaxHandler是自己封裝的一個方法)
這些都是做非同步請求用的
理解了他們的含義後就知道應該怎麼去操作了
在說一說二級關聯,我的實現思路是這樣的,我找到表一的ID,然後在select1中進行change時,根據select1中文字的ID進行select2中文字的查詢(因為表一和表2是通過ID進行關聯的),實現程式碼如上圖所示。
還有或者可以直接respose.write(js),js的功能是,通過迴圈表直接獲取每行的值,然後寫到前臺的相應位置。具體怎麼實現就動手去做吧。其實還是思路最重要