フォームでAsp.NetMVC4を使用しています。カスケードにドロップダウンリストがあります。別のDropDownListで[Distrito]を選択すると、[Sucursal]の値が読み込まれます。これは正しく機能します。問題は、検索する必要があるときにレコードを挿入できます。正しい値を設定していないデータを取得する項目。これはコントローラーのコードです。
public JsonResult Buscar(string id){
string Mensaje = "";
Models.cSinDenuncias oDenuncia = new Models.cSinDenuncias();
oDenuncia.sd_iddenuncia = id;
var denuncia = Servicio.RecuperaDenuncia<Models.cSinDenuncias>(ref Mensaje, oDenuncia.getPk(), oDenuncia);
string HoraDenuncia = denuncia.sd_horadenuncia.ToString();
return Json(new {objDenuncia = denuncia, hDenuncia = HoraDenuncia});
}
objDenunciaには、たとえば値objDenuncia.sd_pardistrito = "TJA" objDenuncia.sd_sucursal="YCB"という値があります。
私が見つけたとき、これはビュー内の私のコードです:
function Buscar() {
var Iddenuncia = $('#sd_iddenuncia').val();
$.ajax({
url: '@Url.Action("Buscar", "raDenuncia")',
type: 'POST',
data: { Id: Iddenuncia },
dataType: 'json',
success: function (data) {
$('#sd_iddenuncia').val(data.objDenuncia.sd_iddenuncia);
$('#ddlParDistrito').val(data.objDenuncia.sd_pardistrito);
$('#ddlParDistrito').trigger('change');
$('#ddlSucursal').trigger('change');
$('#ddlSucursal').val();
$('#ddlSucursal').val(data.objDenuncia.sd_sucursal);
$("select#ddlSucursal").val(data.objDenuncia.sd_sucursal);
}
});
}
ドロップダウンリストのddlParDistritoの値は「TJA」です。テキストは「TARIJA」です。コンポーネントのテキストがexecute$('#ddlParDistrito')。trigger('change');であることをよく示しています。ドロップダウンリスト「Sucursal」のこのロードデータですが、現在の値は設定されていません。このshowme「-SUCURSAL-」では、現在の値は「YCB」で、テキストは「YACUIBA」です。この問題を解決してください。
よろしくリカルド
私の見解では、このドロップダウンリストがあります。「SUCURSAL」には、新しいSelectList(Enumerable.Empty()を使用します。
<td class="name"><label>Distrito:</label></td>
<td class="name">@Html.DropDownListFor(u => u.sd_pardistrito, new SelectList(ViewBag.Distrito as System.Collections.IEnumerable, "cp_idparametro", "cp_descparametro"), "-- DISTRITO --", new { id = "ddlParDistrito", style = "width:125px;" })</td>
<td class="name"><label>Sucursal:</label></td>
<td class="name">@Html.DropDownListFor(u => u.sd_sucursal, new SelectList(Enumerable.Empty<SelectListItem>(), "cp_idparametro", "cp_descparametro"), "-- SUCURSAL --", new { id = "ddlSucursal", style = "width:125px;" })</td>
私のコントローラーでは、「DISTRITO」のオプションを変更するときにドロップダウンリストをロードするためにこのメソッドを使用します
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult LoadSucusalByDistrito(string id)
{
var sucursalList = this.GetSucursal(id);
var sucursalData = sucursalList.Select(m => new SelectListItem()
{
Text = m.cp_descparametro,
Value = m.cp_idparametro,
});
return Json(sucursalData, JsonRequestBehavior.AllowGet);
}
私の見解では、オプションddlDistritoを変更するとddlSucursalがロードされます
$("#ddlParDistrito").change(function () {
var idDistrito = $(this).val();
$.getJSON("/raDenuncia/LoadSucusalByDistrito", { id: idDistrito },
function (distritoData) {
var select = $("#ddlSucursal");
select.empty();
select.append($('<option/>', {
value: 0,
text: "-- SUCURSAL --"
}));
$.each(distritoData, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});