누군가 내 콤보 상자의 매개 변수를 내 컨트롤러의 매개 변수 중 하나에있는 매개 변수에 묶는 방법을 알려주기를 바랍니다. 나는 DevExpress의 제어 제품군을 사용하고이 내 코드입니다 :MVC에서 버튼을 클릭하여 컨트롤러에 매개 변수를 전달하는 방법은 무엇입니까?
[HttpPost]
public ActionResult Filter(string filterCriteria)
{
ViewData.Model = Repository.GetReports(filterCriteria);
return RedirectToAction("Index");
}
그리고 이것은 내보기입니다 :
<div style="float:right;padding-bottom:20px;" >
@using (Html.BeginForm())
{
<table><tr><td>
Filter by Keyword:</td>
<td>
@Html.DevExpress().DropDownEdit(
settings =>
{
settings.Name = "checkComboBox";
settings.Width = 210;
settings.Theme = Utils.CurrentTheme;
settings.Properties.DropDownWindowStyle.BackColor = System.Drawing.Color.FromArgb(0xEDEDED);
settings.Properties.ClientSideEvents.ValueChanged = "function(s, e) {e.customArgs[\"filterCriteria\"] = checkComboBox.Name.toString();}";
settings.SetDropDownWindowTemplateContent(c =>
{
@Html.DevExpress().ListBox(
listBoxSettings =>
{
listBoxSettings.Name = "checkListBox";
listBoxSettings.SkinID = "CheckComboBoxListBox";
listBoxSettings.CallbackRouteValues = new { Controller = "Report", Action = "Filter" };
listBoxSettings.Theme = Utils.CurrentTheme;
listBoxSettings.ControlStyle.Border.BorderWidth = 2;
listBoxSettings.ControlStyle.BorderBottom.BorderWidth = 1;
listBoxSettings.ControlStyle.BorderBottom.BorderColor = System.Drawing.Color.FromArgb(0xDCDCDC);
listBoxSettings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
listBoxSettings.Height = 100;
listBoxSettings.Properties.SelectionMode = ListEditSelectionMode.CheckColumn;
listBoxSettings.Properties.ClientSideEvents.SelectedIndexChanged = "OnListBoxSelectionChanged";
}
).BindList(Repository.GetKeywords())
.Render();
ViewContext.Writer.Write("<table style=\"width:100%\"><tr><td align=\"right\">");
@Html.DevExpress().Button(
buttonSettings =>
{
buttonSettings.Name = "buttonClose";
buttonSettings.Text = "Close";
buttonSettings.Style.Add("float", "right");
buttonSettings.Theme = Utils.CurrentTheme;
buttonSettings.ClientSideEvents.Click = "function(s, e){ checkComboBox.HideDropDown(); }";
}
)
.Render();
ViewContext.Writer.Write("</td></tr></table>");
});
settings.Properties.EnableAnimation = true;
settings.Properties.ClientSideEvents.TextChanged = "SynchronizeListBoxValues";
settings.Properties.ClientSideEvents.DropDown = "SynchronizeListBoxValues";
}
).GetHtml()
</td><td>
@Html.DevExpress().Button(
settings =>
{
settings.Name = "btnApply";
settings.ControlStyle.CssClass = "button";
settings.Text = "Apply";
settings.UseSubmitBehavior = true;
settings.Theme = Utils.CurrentTheme;
settings.Width = 80;
settings.RouteValues = new { Controller = "Report", Action = "Filter" };
}
).GetHtml()
</td><td>
@Html.DevExpress().Button(
settings =>
{
settings.Name = "btnClear";
settings.ControlStyle.CssClass = "button";
settings.Text = "Clear";
settings.ClientSideEvents.Click = "function(s, e){ ASPxClientEdit.ClearEditorsInContainer(); }";
settings.Theme = Utils.CurrentTheme;
settings.Width = 80;
}
).GetHtml()
</td></tr></table>
}
</div>
나는 기본적으로 하단에있는 gridview가 나는 드롭 다운 목록으로 필터링 할 것 그 위에. 내 컬렉션을 필터로 이동하기 위해 버튼을 사용하여 액션을 호출합니다. 이 예에서, 난 그냥 내가하지만 실패 값을 다시 통과 할 수 있어요 경우 즉
settings.Properties.ClientSideEvents.ValueChanged = "function(s, e) {e.customArgs[\"filterCriteria\"] = checkComboBox.Name.toString();}";
그냥보고 다시 컨트롤의 이름을 전달하려고 노력했다. 누군가가 정교한 방법으로이 작업을 수행 할 수 있습니까? 감사합니다,
나는 가장 좋은 방법은 jQuery를 호출을 통해 것 같아요. 이 옵션에 관심이 있으십니까? –
@ Html.BeginForm에 대한 나머지 옵션은 어디에 있습니까? – CrazyCoderz