รายการแบบหล่นลงตัวเลือกว่างเมื่อแหล่งข้อมูลเป็นแมโคร

ฉันใช้โค้ดต่อไปนี้เป็นแมโครเพื่อเติมข้อมูลตัวควบคุมรายการแบบหล่นลง ปัญหาที่ฉันมีคือตัวเลือกว่างที่ฉันเพิ่มในโค้ดไม่แสดงผลเป็นตัวเลือกในรายการแบบเลื่อนลง ฉันไม่แน่ใจว่าทำไม

       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;
    }

อัปเดต

ฉันทำงานได้โดยการส่งคืนสตริงที่มีตัวคั่นแทน

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 แหล่งที่มา


คำตอบ (1)


ในข้อความ ListItem ใหม่ของคุณ ให้วางข้อความเช่น "-- เลือกหนึ่ง --" การใช้ค่าว่างและสตริง Kentico จะตัดค่าเหล่านั้นออกเมื่อสร้างเมนูแบบเลื่อนลง คุณควรหลีกเลี่ยงการตั้งค่าที่ไม่ถูกต้องเช่น "-1" ได้

อัปเดต
จากคำตอบของคุณ ฉันขอแนะนำให้ใช้คำสั่ง sql ง่ายๆ เพื่อบรรลุสิ่งที่คุณกำลังมองหา เทียบกับวิธีมาโครที่กำหนดเอง

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
การแก้ไขบรรทัดเป็น items.Insert(0, new ListItem("-- select one --", " ")); จะทำให้ตัวเลือกแสดงผล แต่มีข้อความอยู่ในค่าตัวเลือกและข้อความด้วย - person RadarBug; 03.05.2017
comment
จากนั้นใส่ค่าที่ไม่ถูกต้องลงไปด้วย การตั้งค่าพื้นฐานของการสร้างรายการที่มีค่าและข้อความในดรอปดาวน์ รายการช่องทำเครื่องหมาย รายการปุ่มตัวเลือก ฯลฯ ใน Kentico บอกว่าค่าและข้อความจะต้องคั่นด้วยเครื่องหมายอัฒภาค ( ; ) ในบรรทัดเดียว ถ้าไม่เช่นนั้น ระบบจะใช้ค่าเดียวสำหรับทั้งข้อความและค่า ดังนั้นให้ป้อนค่าและแสดงข้อความ - person Brenden Kehren; 03.05.2017
comment
ฉันไม่ต้องการค่าที่ไม่ถูกต้อง ฉันต้องการค่าว่าง ฉันได้อ่านเอกสารแล้วและได้ปล่อยสตริงที่คั่นด้วยเครื่องหมายจุลภาคด้วย ดูเหมือนจะไม่มีอะไรให้ตัวเลือกที่มีค่าว่างแก่ฉัน - person RadarBug; 03.05.2017
comment
จากนั้นใช้แบบสอบถาม SQL แบบธรรมดาเทียบกับการเขียนโค้ด C# คุณสามารถดำเนินการนี้ให้สำเร็จได้โดยไม่มีปัญหาโดยใช้คำสั่ง 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
ฉันขอขอบคุณที่คุณตอบกลับอย่างรวดเร็ว แต่มีเหตุผลที่ดีว่าทำไมฉันถึงต้องส่งสิ่งนี้ (และตัวอย่างอื่นๆ) ผ่านมาโคร - person RadarBug; 03.05.2017
comment
เข้าใจ @RadarBug แล้ว คุณจะต้องป้อนค่าและข้อความที่ไม่ถูกต้องเพื่อให้มาโครประมวลผลตามที่คุณต้องการ - person Brenden Kehren; 03.05.2017