Я создал таблицу, сгенерированную из моей базы данных SQL с «заплатками» в моем текущем «пакете» для этой веб-страницы, показанной здесь:
<table id="PatchTable">
<tr>
<th>
Name
</th>
<th>
Date
</th>
<th>
Detach
</th>
<th>
Evironment
</th>
<th>
Platform
</th>
<th>
</th>
</tr>
@{DeploymentMVC.Models.DeploymentDb db = new DeploymentMVC.Models.DeploymentDb();
DeploymentMVC.Models.Patch[] patches = db.GetPatches(Model);
}
@foreach (var patch in patches)
{
<tr id=@string.Format("patch_{0}", patch.PatchID)>
<td class="NameDisplay">
@Html.DisplayFor(ptch => patch.PatchName)
</td>
<td class="DateDisplay">
@Html.DisplayFor(ptch => patch.PatchDate)
</td>
<td>
<input type="hidden" name="pkgID" class="pkgID" value="@Model.PackageID" />
<input type="checkbox" class="patchIds" name="patchIdString" value="@patch.PatchID" />
</td>
<td>
<div id=@string.Format("environment_{0}", patch.PatchID)>
@patch.Environment
</div>
<div class="hidden" id=@string.Format("SelectEnvironment_{0}", patch.PatchID) >
<select name="DeploymentOption" id=@string.Format("EnvironmentValue_{0}", patch.PatchID)>
<option value="Staging">Staging</option>
<option value="Live">Live</option>
</select>
</div>
</td>
<td>
@*TODO: Figure out deploy options*@
<div id=@string.Format("platform_{0}", patch.PatchID)>
@patch.Platform
</div>
<div class="hidden" id=@string.Format("SelectPlatform_{0}", patch.PatchID)>
<select name="Staging Servers" id=@string.Format("PlatformValue_{0}", patch.PatchID)>
<option value="air-cast">air-cast</option>
<option value="redshop">Redshop</option>
</select>
</div>
</td>
<td>
<div class="EditButton">
<input type="button" class="button EditButtonInput" value="" id=@string.Format("edit_{0}", patch.PatchID) />
</div>
<div class="SaveButton">
<input type="button" class="button SaveButtonInput hidden" value="" id=@string.Format("save_{0}", patch.PatchID) />
</div>
</td>
</tr>
}
</table>
А затем у меня есть еще одна таблица нераспределенных«патчи», которые можно добавить в мою таблицу выше ^ с помощью флажка и кнопки отправки.Показано здесь:
<table id="newPatchTable" class="sortable">
<tr>
<th>
<div class="pointer">
Name
</div>
</th>
<th>
<div class="pointer">
Date
</div>
</th>
<th>
Location
</th>
<th>
</th>
</tr>
@{
DeploymentMVC.Models.Patch[] patchArray = DeploymentMVC.Models.DirectoryHelper.GetAllPatches();
}
@if (patchArray.Length != 0)
{
foreach (var patch in patchArray)
{
<tr id=@string.Format("addPatch_{0}", patch.PatchName.Replace(@" ", string.Empty))>
<td class="NameDisplay">
@Html.DisplayFor(modelItem => patch.PatchName)
</td>
<td class="DateDisplay">
@Html.DisplayFor(modelItem => patch.PatchDate)
</td>
<td class="LocationDisplay">
@Html.DisplayFor(modelItem => patch.PatchLocation)
</td>
<td>
<input type="checkbox" name="patchNames" class="PatchNames" value="@patch.PatchName" />
</td>
</tr>
}
}
else
{
<tr>
<td>
<div>
<a>There are no current patches to add to your package. Please go to the @Html.ActionLink("Deploy Packages", "DeployPackages", "Package")
page to see packages or refresh the page if you recently committed a change are
expecting a patch to show up here. </a><a href="sf-build:8080">Click here to go to TeamCity
to manually build your patch.</a>
</div>
</td>
</tr>
}
</table>
В настоящее время я написал несколько javascript для удаления выбранных «патчей» (строк) из моей нераспределенной таблицы исправлений (таблица 2) и добавил их в таблицу исправлений пакета (таблица1).Я знаю, что это не правильный способ сделать это, но я не мог понять, как использовать clone()
и иметь возможность редактировать id
, class
и текст каждого <tr>
, <td>
,и <div>
.
Вот мой JS (я удалил некоторые вещи, потому что не думаю, что они необходимы для моего вопроса):
$('#AddSelectedPatches').click(function () {
...
$.each($('.PatchNames:checked'), function (i, element) {
...
//Creates row in the package's "Patches" table
var newRow = '<tr id=patch_' + patchID + '>'
+ '<td class="NameDisplay">' + patchName + '</td>'
+ '<td class="DateDisplay">' + patchDate + '</td>'
+ '<td><input type="hidden" name="pkgID" class="pkgID" value=' + $('#pkgID').val() + '/>'
+ '<input type="checkbox" class="patchIds" name="patchIdString" value=' + patchID + ' /></td>'
+ '<td><div id=environment_' + patchID + '>' + patchEnvironment + '</div>'
+ '<div class="hidden" id=SelectEnvironment_' + patchID + '><select name="DeploymentOption" id="EnvironmentValue_" + patch.PatchID>'
+ '<option value="Staging">Staging</option><option value="Live">Live</option></select></div></td>'
+ '<td><div id=platform_' + patch.PatchID + '>' + patchPlatform + '</div>'
+ '<div class="hidden" id=SelectPlatform_' + patchID + '>'
+ '<select name="Staging Servers" id="PlatformValue_" + patch.PatchID><option value="1">air-cast</option>'
+ '<option value="2">Redshop</option></select></div></td><td><div class="EditButton"><input type="button" class="button EditButtonInput" value="" id=edit_' + patchID + ' />'
+ '</div><div class="SaveButton"><input type="button" class="button SaveButtonInput hidden" value="" id=save_' + patchID + ' />'
+ '</div></td></tr>';
$('#PatchTable').append(newRow);
//Removes row in "New Patches to Add" table
var patchName_noSpaces = patchName.replace(/\s/g, '')
$('#addPatch_' + patchName_noSpaces).remove();
});
return false;
});
Это работает для визуального добавленияпатчи (и мои флажки работают), но мои EditButtonInput
и скрытые SaveButtonInput
классы не распознают строки, созданные в javascript (т.е. мои click
события для этих двух классов ничего не делают, когда щелкают созданные JS).Я проверил ошибки орфографии, но не нашел ни одной, которая могла бы вызвать эту проблему.
Пожалуйста, дайте мне знать, если мой вопрос не ясен.Спасибо!