jEditable - редактировать данные с выпадающим - PullRequest
0 голосов
/ 21 июля 2011

Я использую Datatables + jEditable для отображения данных из моей базы данных и позволяю пользователю редактировать каждую ячейку напрямую.

В настоящее время я могу реализовать встроенное редактирование и сохранить обновленное значение обратно в базу данных для текстового поля итакже с помощью DatePicker, однако, я столкнулся с проблемой с данными, которые мне нужно разрешить редактировать с помощью раскрывающегося списка.

Значение, которое мне нужно отредактировать, извлекается из другой таблицы БД по взаимосвязи внешнего ключа.

 <td id="type@(item.FoodID)" class="dropdown">
     @Html.DisplayFor(modelItem => item.FoodTypes.FoodTypeName)
 </td>

Я следую указаниям из http://gunbladeiv.blogspot.com/2011/06/part-2-mvc-3-and-datatables-with-inline.html, используя действие для возврата списка выбора по Json:

 function getFoodTypesList() {
    var list;
    $.post('GetFoodTypes', {},
        function (data) {
            list = validateJSON(data);
        },
        'json/javascript'
    );
    return list;
}

function validateJSON(x) {
    var orig = x;
    var stgify = JSON.stringify(orig);
    var splitchar = ['\\"', '\',\'', '[', ']', '\"'];
    var joinchar = ['\'', '\':\'', '', '', ''];

    for (i = 0; i < 5; i++) {
        stgify = stgify.split(splitchar[i]);
        tmp = stgify.join(joinchar[i]);
        stgify = tmp;
    }
    stgify = "{" + stgify + "}";
    var finalEdit = stgify;
    return finalEdit;
} 

Вопрос: я не понимаю, для чего используется метод validateJson, ноЯ включаю его так же, как в примере

Когда я пытаюсь щелкнуть по полю, я получаю ошибку javascript от firebug: «xxx» не определено (xxx - это имя типа пищи)

Если яизмените представление на:

<td id="type@(item.FoodID)" class="dropdown">
    @Html.DisplayFor(modelItem => item.FoodTypeID)
</td>

Ошибка исчезла, но я получил пустой выпадающий список.

Действительно нужна помощь здесь ....

1 Ответ

0 голосов
/ 11 октября 2011

Мне удалось изменить функцию validateJson в соответствии с моей ситуацией и ее работой! На всякий случай, если кто-то ищет решение, я опубликую свой метод здесь:

// Function to format the food type list into plugin required json format
function validateJSON(x) {
    var orig = x;

    // Split and cover each array item with "" and then join with :
    for (i = 0; i < orig.length; i++) {
        var temp = orig[i].toString();
        var tempArray = temp.split(",");
        for (j = 0; j < tempArray.length; j++) {
            tempArray[j] = "\"" + tempArray[j].toString() + "\"";
        }
        orig[i] = tempArray.join(":");
    }

    // Original validateJson method get from website
    var stgify = JSON.stringify(orig);
    var splitchar = ['\\"', '\',\'', '[', ']', '\"'];
    var joinchar = ['\'', '\':\'', '', '', ''];

    for (i = 0; i < 5; i++) {
        stgify = stgify.split(splitchar[i]);

        tmp = stgify.join(joinchar[i]);
        stgify = tmp;
    }

    stgify = "{" + stgify + "}";
    var finalEdit = stgify;
    return finalEdit;
}
...