2017-05-09 132 views
-2

請參閱附加的圖像。 我使用動態DropDownList顯示國家,州&城市在我的Add_New組織形式。我正在從SQL數據庫中檢索DropDownList項目。動態DropDownList中的問題使用JQuery

問題是,當我點擊提交按鈕時,它將ID存儲到數據庫中,而不是DropDownList項的文本。

請幫我我已經嘗試了很多解決方案,但問題仍然存在。 控制器將數據保存:

[HttpPost] 
Public ActionResult Addnew(Organiztioninfo org) 
{ 
    db.Organiztioninfoes.Add(org); 
    db.SaveChanges(); 
    return View(); 
} 
//Organization Info is my table name. I am using Entity Framework 

控制器用於檢索國家列表數據表格數據庫:

Public JsonResult Details() 
{ 

var country = db.countries.ToList(); 
//countries is database table name holding list of countries 
List<SelectListItems> licountry = new List<SelectListItems>(); 
foreach(var u in country) 
{ 

    licountry.Add(new SelectListItems{Text = u.Name, Value= u.ID.ToString()}); 
} 

    return Json(new SelectList(licountry, "Value", "Text", 
JsonRequestBehaviour.AllowGet)) 
} 
//Same Methods are implemented for populating State & Cities list.. 

DropDownList-Code|| J Query-Dynamic List||

+0

將數據保存到數據庫的代碼在哪裏?你是否將數據保存在同一個表中? –

+0

我有一個在HTTP POST請求上調用的控制器方法。 – Ali

+0

您能分享該代碼嗎?使用代碼更新原始帖子...請勿在評論中分享代碼.. –

回答

0

這背後的原因是下拉的SelectedValue屬性被分配到類對象的屬性Organiztioninfo。下拉列表中的Value屬性與的Country,StateCity綁定,如J Query-Dynamic List圖所示。

如果您不希望Id被分配,則應在下面動態創建下拉列表時將Value設置爲data.Text

//For country 
$("#country").appened('<option value="' + data.Text + '">' + data.Text + '</option>'); 

//For States 
$("#province").appened('<option value="' + state.Text + '">' + state.Text + '</option>'); 

// For city (I assume that the dataitem name is 'city' here. 
$("#city").appened('<option value="' + city.Text + '">' + city.Text + '</option>'); 

這應該可以解決您的問題。

+0

我試過這個解決方案。但在我的表單中,當用戶從DropDownList中選擇國家選項時。 JQuery腳本根據用戶選擇的國家Item_ID填充狀態項目。所以如果我們將data.Value改成data.Text。那麼JQuery將無法找到該特定國家/地區項目的記錄。 – Ali

+0

好吧..知道了..有道理......但爲什麼你想要存儲名稱而不是ID?如果一個或多個國家的名稱稍後改變,該怎麼辦?您將在OrganizationInfo表中包含無效數據...我確信您已經考慮過了。 –

+0

我想我知道通過使用隱藏字段解決這個問題的其他方法...給我一些時間。我會更新我的答案..到那個時候你可以分享基於選定的國家填充國家的代碼嗎? –