Покажите “Загрузку …” в выпадающем поле

Любой ценой поместите это в codeplex проект.

Сериализация / Десериализовывающие объекты к XML:

/// <summary>Serializes an object of type T in to an xml string</summary>
/// <typeparam name="T">Any class type</typeparam>
/// <param name="obj">Object to serialize</param>
/// <returns>A string that represents Xml, empty otherwise</returns>
public static string XmlSerialize<T>(this T obj) where T : class, new()
{
    if (obj == null) throw new ArgumentNullException("obj");

    var serializer = new XmlSerializer(typeof(T));
    using (var writer = new StringWriter())
    {
        serializer.Serialize(writer, obj);
        return writer.ToString();
    }
}

/// <summary>Deserializes an xml string in to an object of Type T</summary>
/// <typeparam name="T">Any class type</typeparam>
/// <param name="xml">Xml as string to deserialize from</param>
/// <returns>A new object of type T is successful, null if failed</returns>
public static T XmlDeserialize<T>(this string xml) where T : class, new()
{
    if (xml == null) throw new ArgumentNullException("xml");

    var serializer = new XmlSerializer(typeof(T));
    using (var reader = new StringReader(xml))
    {
        try { return (T)serializer.Deserialize(reader); }
        catch { return null; } // Could not be deserialized to this type.
    }
}
6
задан Nathan Koop 13 July 2009 в 17:35
поделиться

4 ответа

Вы можете добавить временный элемент в раскрывающийся список во время работы ajax:

$('#myDropDown').prepend($('<option></option>').html('Loading...'));
11
ответ дан 8 December 2019 в 05:56
поделиться

Если там ничего нет для начала, просто сделайте это HTML по умолчанию, и вы удалите половину своего jQuery.

<select>
  <option>Loading...</option>
</select>

И когда ваш запрос завершится, просто замените единственный вариант с вашими результатами.

2
ответ дан 8 December 2019 в 05:56
поделиться

Назовем ваше раскрывающееся меню «userChoice», вы можете написать такой код, как

$(document).ready(
    function()
    {

        //Before calling your ajax method, clear the select drop down.
        //and add a loading option.
        $('#userChoice')
            .children()
            .remove()
            .end()
            .append('<option value="">Loading...</option>');

        $.ajax(

                    //Load the userChoice as usual in success handler of your ajax call. 
                    success : function() { //Load #userChoice } 
              );


    }
);
8
ответ дан 8 December 2019 в 05:56
поделиться

Если вы выполняете запрос через вызов AJAX, вы можете использовать что-то вроде следующего, чтобы сначала очистить раскрывающийся список и вставить сообщение о загрузке (в Javascript на стороне клиента):

var lb = document.getElementById ("myDropdownList");
lb.options.length = 0;
var newOpt = new Option("Loading...", "");
lb.options[0] = newOpt;
// Your jquery call here
...
0
ответ дан 8 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: