|
KanbanFeatures.cshtml
@(Html.EJ().Kanban("Kanban")
.EditSettings(edit =>
{
edit.AllowAdding(true)
.AllowEditing(true)
.DialogTemplate("#template")
.EditMode(KanbanEditMode.DialogTemplate);
})
.ClientSideEvents(eve => eve.ActionComplete("complete"))
)
<script>
function complete(args) {
if ((args.requestType == "beginedit" || args.requestType == "add") && args.model.editSettings.editMode == "dialogtemplate") {
$("#Estimate").ejNumericTextbox({ value: parseFloat($("#Estimate").val()), width: "175px", height: "34px", decimalPlaces: 2 });
$("#Assignee").ejDropDownList({ width: '175px' });
$("#Status").ejDropDownList({ width: '175px' });
$("#Priority").ejDropDownList({ width: '175px' });
if (args.requestType == "beginedit" || args.requestType == "add") {
$("#Assignee").ejDropDownList("setSelectedValue", args.data['Assignee']);
$("#Priority").ejDropDownList("setSelectedValue", args.data['Priority']);
$("#Status").ejDropDownList("setSelectedValue", args.data['Status']);
}
$(".e-field").css({ 'width': '175px', 'text-align': 'left' });
}
}
</script>
<div id="template" style="display: none">
@{
Html.RenderPartial("_PartialPage1"); // Specify Kanban dialog content into Partial view page
}
</div> |
|
_PartialPage1.cshtml
<table cellspacing="10" style="border-spacing: 11px;"> // To specify content of dialog template
<tr>
<td style="text-align: right;">
Id
</td>
<td style="text-align: left">
<input id="Id" name="Id" value="{{: Id}}" class="e-field e-ejinputtext valid e-disable" style="text-align: right; width: 175px; height: 28px" disabled="disabled" />
</td>
<td style="text-align: right;">
Status
</td>
<td style="text-align: left">
<select id="Status" name="Status">
<option value="Close">Close</option>
<option value="InProgress">InProgress</option>
<option value="Open">Open</option>
<option value="Testing">Testing</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Estimate
</td>
<td style="text-align: left">
<input type="text" id="Estimate" name="Estimate" value="{{:Estimate}}" />
</td>
<td style="text-align: right;">
Assignee
</td>
<td style="text-align: left">
<select id="Assignee" name="Assignee">
<option value="Nancy Davloio">Nancy Davloio</option>
<option value="Andrew Fuller">Andrew Fuller</option>
<option value="Janet Leverling">Janet Leverling</option>
<option value="Margaret hamilt">Margaret hamilt</option>
<option value="Steven walker">Steven walker</option>
<option value="Michael Suyama">Michael Suyama</option>
<option value="Robert King">Robert King</option>
<option value="Laura Callahan">Laura Callahan</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Tags
</td>
<td style="text-align: left">
<input id="Tags" name="Tags" value="{{: Tags}}" class="e-field e-ejinputtext valid" style="width: 175px; height: 28px" />
</td>
<td style="text-align: right;">
Priority
</td>
<td style="text-align: left">
<select id="Priority" name="Priority">
<option value="Low">Low</option>
<option value="High">High</option>
<option value="Critical">Critical</option>
<option value="Normal">Normal</option>
<option value="Release Breaker">Release Breaker</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Summary
</td>
<td style="text-align: left">
<textarea id="Summary" name="Summary" class="e-ejinputtext" value="{{: Summary}}" style="width: 270px; height: 95px">{{: Summary}}</textarea>
</td>
</tr>
</table> |
Hi Buvana,
Thanks for your help!
My partial view needs to load additional data that is not part of the card object; how can I modify your example so that when the partial view opens, it takes the card id, goes to the controller and loads a new model to populate the partial view?
|
KanbanFeatures.cshtml
@(Html.EJ().Kanban("Kanban")
.EditSettings(edit =>
{
edit.AllowAdding(true)
.AllowEditing(true)
.DialogTemplate("template") // Specify id of the template
.EditMode(KanbanEditMode.DialogTemplate);
})
.ClientSideEvents(eve => eve.ActionComplete("complete")) // Action complete event
)
<script>
var curData = [];
function complete(args) { // Action complete event
if ((args.requestType == "beginedit") && args.model.editSettings.editMode == "dialogtemplate") {
if (!ej.isNullOrUndefined(args.data))
var CardID = args.data[this.model.fields.primaryKey]; // Get clicked card Id
curData.push(args.data); // Get current card data
$.ajax
({
url: "/Kanban/EditPartial?CardID=" + CardID, // Call EditPartial method in controller
type: 'GET',
success: function (data) {
var obj = $("#Kanban").data("ejKanban");
var id = obj.element.attr("id");
$("#" + id +"EditForm").find(".e-kanban-editdiv").prepend(data)// Get data from partialView page
$("#Estimate").ejNumericTextbox({ value: curData[0]['Estimate'], width: "175px", height: "34px", decimalPlaces: 2 });
$("#Assignee").ejDropDownList({ width: '175px' });
$("#Status").ejDropDownList({ width: '175px' });
$("#Priority").ejDropDownList({ width: '175px' });
if (args.requestType == "beginedit" || args.requestType == "add") {
$("#Assignee").ejDropDownList("setSelectedValue", curData[0]['Assignee']);
$("#Priority").ejDropDownList("setSelectedValue", curData[0]['Priority']);
$("#Status").ejDropDownList("setSelectedValue", curData[0]['Status']);
}
curData = [];
}
});
}
}
</script> |
|
KanbanController.cshtml
public ActionResult EditPartial(int CardId) // Triggered when ajax post
{
var product = new NorthwindDataContext().Products.ToList(); // Get Product table list
var data = product.Where(ID => ID.ProductID == CardId).SingleOrDefault(); // Find particular product data using CardId
var task = new NorthwindDataContext().Tasks.Take(30).ToList(); // Get Tasks table list
var kanData = task.Where(ID => ID.Id == CardId).SingleOrDefault(); // Find particular task data using CardId
ViewBag.productData = data;
ViewBag.kanbanData = kanData;
return PartialView("_PartialPage1", data);
} |
|
_PartialPage1.cshtml
<div id="template"> // Dialog template ID
<table cellspacing="10" style="border-spacing: 11px;">
<tr>
<td style="text-align: right;">
Id
</td>
<td style="text-align: left">
<input id="Id" name="Id" value="@(ViewBag.productData.ProductID)" class="e-field e-ejinputtext valid e-disable" style="text-align: right; width: 175px; height: 28px" disabled="disabled" /> // Get product data
</td>
<td style="text-align: right;">
Status
</td>
<td style="text-align: left">
<select id="Status" name="Status">
<option value="Close">Close</option>
<option value="InProgress">InProgress</option>
<option value="Open">Open</option>
<option value="Testing">Testing</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Estimate
</td>
<td style="text-align: left">
<input type="text" id="Estimate" name="Estimate" />
</td>
<td style="text-align: right;">
Assignee
</td>
<td style="text-align: left">
<select id="Assignee" name="Assignee">
<option value="Nancy Davloio">Nancy Davloio</option>
<option value="Andrew Fuller">Andrew Fuller</option>
<option value="Janet Leverling">Janet Leverling</option>
<option value="Margaret hamilt">Margaret hamilt</option>
<option value="Steven walker">Steven walker</option>
<option value="Michael Suyama">Michael Suyama</option>
<option value="Robert King">Robert King</option>
<option value="Laura Callahan">Laura Callahan</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Tags
</td>
<td style="text-align: left">
<input id="Tags" name="Tags" value="@(ViewBag.kanbanData.Tags)" class="e-field e-ejinputtext valid" style="width: 175px; height: 28px" /> // Get Kanban data
</td>
<td style="text-align: right;">
Priority
</td>
<td style="text-align: left">
<select id="Priority" name="Priority">
<option value="Low">Low</option>
<option value="High">High</option>
<option value="Critical">Critical</option>
<option value="Normal">Normal</option>
<option value="Release Breaker">Release Breaker</option>
</select>
</td>
</tr>
<tr>
<td style="text-align: right;">
Summary
</td>
<td style="text-align: left">
<textarea id="Summary" name="Summary" class="e-ejinputtext" style="width: 270px; height: 95px">@(ViewBag.kanbanData.Summary)</textarea>
</td>
</tr>
</table>
</div> |