Я пытаюсь динамически заполнить раскрывающийся список для jqGrid, когда пользователь редактирует данные. Однако у меня это довольно много работает, в раскрывающемся списке есть одно значение "undefined". Я подозреваю, что это связано с тем, как я отправляю данные в сетку. Я использую ASP.NET MVC 2 и получаю данные для раскрывающегося списка с помощью jQuery следующим образом:
var destinations = $.ajax({ type:"POST",
url: '<%= Url.Action("GetDestinations", "Logger") %>',
dataType: "json",
async: false,
success: function(data) {
} }).responseText;
Теперь jqGrid хочет, чтобы значения для раскрывающегося списка были отформатированы следующим образом:
value: "FE:FedEx; IN:InTime; TN:TNT"
Я использую StringBuilder чтобы перебрать мою коллекцию и предоставить правильную строку, которую хочет jqGrid:
foreach (var q in query)
{
sb.Append("ID:");
sb.Append(q.Destination);
sb.Append("; ");
}
Я возвращаю это из своего контроллера следующим образом:
return this.Json(sb.ToString());
Это все здорово, и я получаю все элементы, которые мне нужны для раскрывающегося списка, но есть дополнительный элемент (последний) под названием «undefined».
Я думаю, что проблема в том, когда я отлаживаю в FireBug, результат для jqGrid выглядит так:
value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""
Посмотрите, как есть два набора кавычек. Вероятно, это потому, что когда я говорю:
sb.ToString()
Он, вероятно, генерирует кавычки, а затем jqGrid добавляет второй набор. Но я не на все 100%.
Как лучше всего с этим справиться? Любой совет будет очень признателен.
РЕШЕНИЕ:
Я решил эту проблему, используя Но я не на все 100%.
Как лучше всего с этим справиться? Любой совет будет очень признателен.
РЕШЕНИЕ:
Я решил эту проблему, используя Но я не на все 100%.
Как лучше всего с этим справиться? Любой совет будет очень признателен.
РЕШЕНИЕ:
Я решил эту проблему, используя мы можем быть уверены, что такого значения слева от среднего элемента нет, только если array [mid] <= startindex, где mid - индекс среднего элемента, а startindex - начало массива.
Соответствующее правило для правая половина массива - это array [mid]> = startindex + numel, где переменные, как указано выше, а numel - это количество элементов справа от середины.
Это не похоже на O (logn), поскольку в в худшем случае мне придется перебирать все, не так ли? Может ли кто-нибудь подсказать мне правильное направление здесь или сказать, что это работает?
Есть идеи, как я могу официально доказать это? Я не прошу однозначного ответа, больше немного помогите мне понять.
В C:
int _solve_prob_int(int depth, int start, int count, int input[])
{
if(count == 0)
return 0;
int mid = start + ((count - 1) / 2);
if(input[mid] == mid)
return 1;
if(input[mid] <= start && input[mid] >= start + count)
return 0;
int n_sub_elleft = (int)(count - 1) / 2;
int n_sub_elright = (int)(count) / 2;
if(input[mid] <= start)
return _solve_prob_int(depth + 1, mid + 1, n_sub_elright, input);
if(input[mid] >= start + count)
return _solve_prob_int(depth + 1, mid - n_sub_elleft, n_sub_elleft, input);
return _solve_prob_int(depth + 1, mid - n_sub_elleft, n_sub_elleft, input) ||
_solve_prob_int(depth + 1, mid + 1, n_sub_elright, input);
}
Контрольный пример:
Sorted args: 1 2 3 4 5 6 7 8 9 10 11 12 :
Start: 0, count: 12, mid: 5 value: 6
Start: 0, count: 5, mid: 2 value: 3
Start: 0, count: 2, mid: 0 value: 1
Start: 1, count: 1, mid: 1 value: 2
Start: 3, count: 2, mid: 3 value: 4
Start: 4, count: 1, mid: 4 value: 5
Start: 6, count: 6, mid: 8 value: 9
Start: 6, count: 2, mid: 6 value: 7
Start: 7, count: 1, mid: 7 value: 8
Start: 9, count: 3, mid: 10 value: 11
Start: 9, count: 1, mid: 9 value: 10
Start: 11, count: 1, mid: 11 value: 12
Выше моя программа запускается с некоторым выводом в зависимости от того, как она выполняла поиск. В списке от 1 до 12 он вращается вокруг индекса 5, определяет, что может быть значение между 0-4 при индексах 0-4. Он также определяет, что может быть значение между 6-11 при индексах 6-11. Итак, я приступаю к поиску их обоих. Это неправильно?