私は2つのドロップダウンを1つ持っています(mutualExcParam)。それは3つのオプションがあります。このオプションを選択した場合は、別のドロップダウンを追加する必要があります(agencyRetrieve)。 これはJSONリクエストを介して行われ、少ないレコードでうまく動作します。レコードの読み込み時間が500を超える場合、読み込み時間が長くなります。私はループそれを通じて ..は、mvcの別のドロップダウン選択に基づいてドロップダウンオプションを設定します
$(document).ready(function() {
$('.mutualExcParam').change(function() { // calling by class name on 1st dropdown
var agencyRetrieveId = $(this).attr('id') + '_'; // 2nd dropdown id
$.ajax({
type: "POST",
contentType: 'application/json',
url: "../Report/FillAgencyValue",
data: JSON.stringify({ agencyId: agencyId}),
success: function (data) {
$('#' + agencyRetrieveId).html('');
var optionhtml1 = '<option value="All">Select All</option>';
$('#' + agencyRetrieveId).append(optionhtml1);
$(data).each(function() {
$('#' + agencyRetrieveId).append($("<option></option>").val(this.Value).html(this.Text));
});
$(".selectpicker").selectpicker('refresh');
}
});
});
});
[HttpPost]
public ActionResult FillAgencyValue(int agencyId, string fromDate, string toDate, int salesArea, string[] salesGroup)
{
AppCode.CommonCommands commonCommands = new AppCode.CommonCommands();
PopulateControlData populateControlData = new PopulateControlData();
// Get all Sales Area
DataTable dtsalesArea = commonCommands.GetAgencyDropdownData(agencyId, fromDate, toDate, salesArea, salesGroup);
populateControlData.agencyValues = new List<SelectListItem>();
if (dtsalesArea.Rows.Count > 0)
{
populateControlData.agencyValues = (from DataRow row in dtsalesArea.Rows
select new SelectListItem
{
Text = row["ParameterLabel"].ToString(),
Value = row["ParameterValue"].ToString()
}).ToList();
}
return Json(populateControlData.agencyValues, JsonRequestBehavior.AllowGet);
}
あなたの代わりに 'FillAgencyValue'からHTMLを返すことをお勧めします。 – Steve
はい。コントローラーコードの平和も追加されました。 – Ammu