Daftar drop-down Opsi kosong jika sumber datanya adalah makro

Saya menggunakan kode berikut sebagai makro untuk mengisi kontrol daftar drop-down. Masalah yang saya alami adalah opsi kosong yang saya tambahkan dalam kode saya tidak ditampilkan sebagai opsi di daftar drop-down. Saya tidak yakin mengapa.

       private object ListOfRegions(EvaluationContext context)
    {
        var regions = CustomTableItemProvider.GetItems(CustomTableClassNames.CountryRegionMapping).WhereNotNull("CountryCode").Column("RegionName").Distinct().OrderByAscending("RegionName");
        var items = regions.ToList().Select(r => new ListItem(r.GetStringValue("RegionName", string.Empty))).ToList();
        items.Insert(0, new ListItem(" ", " "));
        return items;
    }

MEMPERBARUI

Saya membuatnya berfungsi dengan mengembalikan string yang dibatasi

var regions = CustomTableItemProvider.GetItems(CustomTableClassNames.CountryRegionMapping).WhereNotNull("CountryCode").Column(columnName).Distinct().OrderByAscending(columnName);
var items = regions.ToList().Select(r => new ListItem(r.GetStringValue(columnName, string.Empty))).ToList();
items.Insert(0, new ListItem("Please select ...", string.Empty));
return items.Select(i => $"{i.Value};{i.Text}");

person RadarBug    schedule 03.05.2017    source sumber


Jawaban (1)


Di teks ListItem baru Anda, tempatkan sesuatu seperti "-- pilih satu --". Menggunakan nilai dan string kosong, Kentico menghapusnya saat membuat dropdown. Anda seharusnya bisa lolos dengan menempatkan nilai yang tidak valid juga seperti "-1".

PERBARUI
Berdasarkan jawaban atas pertanyaan Anda, saya sarankan menggunakan pernyataan sql sederhana untuk mencapai apa yang Anda cari vs. metode makro khusus.

SELECT '' AS Value, '-- select one --' AS [Text]
UNION
SELECT DISTINCT ItemText AS Value, ItemText AS [Text]
FROM customtable_SampleTable
WHERE ItemText IS NOT NULL
person Brenden Kehren    schedule 03.05.2017
comment
Memodifikasi baris menjadi items.Insert(0, new ListItem("-- select one --", " ")); menghasilkan opsi yang dirender tetapi dengan teks dalam nilai opsi serta teks - person RadarBug; 03.05.2017
comment
Kemudian tempatkan juga nilai yang tidak valid di sana. Pengaturan dasar untuk membuat daftar dengan nilai dan teks di dropdown, daftar kotak centang, daftar tombol radio, dll di Kentico mengatakan nilai dan teks perlu dipisahkan dengan titik koma ( ; ) dalam satu baris. Jika tidak, nilai tunggal akan digunakan untuk teks dan nilai. Jadi masukkan nilai dan tampilkan teks. - person Brenden Kehren; 03.05.2017
comment
Saya tidak ingin nilai yang tidak valid. Saya ingin nilai kosong. Saya telah membaca dokumen dan juga mengeluarkan string yang dipisahkan koma. Sepertinya tidak ada yang memberi saya opsi dengan nilai kosong - person RadarBug; 03.05.2017
comment
Kemudian gunakan kueri SQL sederhana vs. menulis kode C# untuk itu. Anda dapat mencapai hal ini tanpa masalah dengan menggunakan pernyataan UNION. SELECT '' AS Value, '-- select one --' AS [Text] UNION SELECT DISTINCT ItemText AS Value, ItemText AS [Text] FROM customtable_SampleTable WHERE ItemText IS NOT NULL - person Brenden Kehren; 03.05.2017
comment
Saya menghargai tanggapan cepat Anda, tetapi ada alasan bagus mengapa saya memerlukan ini (dan contoh lainnya) untuk disampaikan melalui makro. - person RadarBug; 03.05.2017
comment
Pahami @RadarBug, maka Anda harus memasukkan nilai DAN teks yang tidak valid agar makro dapat memprosesnya sesuai keinginan. - person Brenden Kehren; 03.05.2017