Kontrol Pengulang: Pindahkan item satu per satu

Saya memiliki kontrol pengulang yang diikat ke List<> generik.

Semua item repeater ada dalam tag <div> tersendiri, sehingga memberikan efek visual blok yang bagus, serta placeholder standar untuk semua item.

Dengan custom sorting, saya sudah bisa mengatur hasilnya sesuai standarnya sendiri, namun sekarang saya membutuhkan sesuatu yang tidak standar.

Saya harus dapat mengambil item yang dipilih di blok <div>, dan memindahkannya ke bagian bawah atau atas daftar item repeater.

Apakah ada cara agar saya bisa melakukan ini? Baik dengan mengikat, atau menggunakan metode repeater_ItemDataBound() repeater?

Kodenya cukup panjang.. Jadi saya akan memposting apa yang menurut saya 'perlu diketahui'.

Mengisi daftar umum

                        while (rdr.Read())
                        {
                            challenge.Add(new ChallengeList
                                {
                                    GameName = rdr["gameName"].ToString(),
                                    CreatorName = rdr["creatorName"].ToString(),
                                    MediatorName = rdr["mediatorName"].ToString(),
                                    ChallengeID = rdr["challengeId"].ToString(),
                                    ChallengeAccepted = rdr["accepted"].ToString(),
                                    MatchDate = DateTime.Parse(rdr["matchDate"].ToString()).ToString("dd MMMM yyyy hh:mm")
                                });
                        }

-Metode yang Sama- Menyortir data, lalu mengikat

    switch (sort)
    {
        case "name":
            Comparison<ChallengeList> name = ChallengeList.CompareGameName;
            challenge.Sort(name);
            break;

        case "date":
            Comparison<ChallengeList> date = ChallengeList.CompareDate;
            challenge.Sort(date);
            break;

        case "status":
            Comparison<ChallengeList> status = ChallengeList.CompareStatus;
            challenge.Sort(status);
            break;
    }

    rptChallenges.DataSource = challenge;
    rptChallenges.DataBind();

Kelas Daftar Umum (Dengan pengurutan)

/// <summary>
/// Class ChallengeList
/// With sorting
/// </summary>
public class ChallengeList
{
    /// <summary>
    /// Compares the name of the game.
    /// </summary>
    /// <param name="game1">The game1.</param>
    /// <param name="game2">The game2.</param>
    /// <returns>System.Int32.</returns>
    public static int CompareGameName(ChallengeList game1, ChallengeList game2)
    {
        return String.Compare(game1.GameName, game2.GameName, StringComparison.Ordinal);
    }

    /// <summary>
    /// Compares the status.
    /// </summary>
    /// <param name="status1">The status1.</param>
    /// <param name="status2">The status2.</param>
    /// <returns>System.Int32.</returns>
    public static int CompareStatus(ChallengeList status1, ChallengeList status2)
    {
        return string.Compare(status1.ChallengeAccepted, status2.ChallengeAccepted, StringComparison.Ordinal);
    }

    /// <summary>
    /// Compares the date.
    /// </summary>
    /// <param name="date1">The date1.</param>
    /// <param name="date2">The date2.</param>
    /// <returns>System.Int32.</returns>
    public static int CompareDate(ChallengeList date1, ChallengeList date2)
    {
        return string.Compare(date1.MatchDate, date2.MatchDate, StringComparison.Ordinal);
    }

    /// <summary>
    /// Compares the date reverse.
    /// </summary>
    /// <param name="date2">The date2.</param>
    /// <param name="date1">The date1.</param>
    /// <returns>System.Int32.</returns>
    public static int CompareDateReverse(ChallengeList date2, ChallengeList date1)
    {
        return string.Compare(date1.MatchDate, date2.MatchDate, StringComparison.Ordinal);
    }

    /// <summary>
    /// Gets or sets the name of the game.
    /// </summary>
    /// <value>The name of the game.</value>
    public string GameName { get; set; }
    /// <summary>
    /// Gets or sets the name of the creator.
    /// </summary>
    /// <value>The name of the creator.</value>
    public string CreatorName { get; set; }
    /// <summary>
    /// Gets or sets the name of the mediator.
    /// </summary>
    /// <value>The name of the mediator.</value>
    public string MediatorName { get; set; }
    /// <summary>
    /// Gets or sets the challenge ID.
    /// </summary>
    /// <value>The challenge ID.</value>
    public string ChallengeID { get; set; }
    /// <summary>
    /// Gets or sets the challenge accepted.
    /// </summary>
    /// <value>The challenge accepted.</value>
    public string ChallengeAccepted { get; set; }
    /// <summary>
    /// Gets or sets the match date.
    /// </summary>
    /// <value>The match date.</value>
    public string MatchDate { get; set; }
}

Penerapan pertanyaan saya di dunia nyata Jika ada kecocokan yang 'ditempel' - itu harus muncul di atas kecocokan terlepas dari tanggal, status atau nama


person TheGeekZn    schedule 25.10.2012    source sumber


Jawaban (1)


Saya akan merekomendasikan Anda memesan data dalam daftar Anda sebelum Anda melihat pengulangnya. Jika hal ini tidak memungkinkan mengingat struktur data Anda dan/atau templat item pengulang, dapatkah Anda menyertakan contoh data dan pengulang sehingga kami dapat membantu lebih lanjut?

EDIT setelah penanya memposting kode

daripada menetapkan tantangan sebagai sumber data untuk pengulang, Anda harus memisahkan semua item yang perlu berada di daftar teratas ke dalam daftar baru dan kemudian menambahkan item lainnya ke akhir item teratas.

sesuatu seperti ini:

var topItmes = new List<ChallengeList>();
var otherItmes = new List<ChallengeList>();

foreach (var item in challenge)
{
    if(/*item needs to be on top*/)
    {
        topItmes.Add(item);
    }
    else
    {
        otherItmes.Add(item);
    }
}

topItmes.AddRange(otherItmes);

bergantung pada kriteria suatu item untuk berada di urutan teratas, Anda mungkin dapat menggunakan ekspresi LINQ untuk menyederhanakan kode ini.

person Fisch    schedule 25.10.2012
comment
Maaf untuk waktu respons yang lama.. Belum pernah melihat pembaruan. Saya dapat melihat proses kode ini.. Akan mencoba secepatnya. - person TheGeekZn; 25.10.2012