LinqPad中如何获取SelectBox选中字符串值及设置提交与显示值?
关于LinqPad中SelectBox的两个问题解答
问题1:获取选中值的字符串形式并传入其他方法
你不需要依赖yourChoice.Dump()来获取值,yourChoice.Content本身就存储了选中的选项。因为示例中选项是字符串数组,直接将其转换为字符串即可,或者提前定义变量存储选中值,后续直接传入方法:
示例代码
var yourChoice = new DumpContainer(); string[] colors = { "Red", "Green", "Violet", "Blue", "Orange", "Yellow" }; // 定义变量存储选中值 string selectedValue = null; var selectBox = new SelectBox(colors, 0, sb => { yourChoice.Content = sb.SelectedOption; // 赋值给字符串变量 selectedValue = sb.SelectedOption.ToString(); // 直接传入其他方法 HandleSelectedCustomer(selectedValue); } ).Dump("Choose a color"); yourChoice.Dump("Your choice(s)"); // 示例业务方法 void HandleSelectedCustomer(string customerName) { $"当前选中客户:{customerName}".Dump(); // 这里编写业务逻辑 }
如果是自定义客户类(比如包含Name属性的Customer类),只需提取对应属性即可:selectedValue = ((Customer)sb.SelectedOption).Name;
问题2:设置提交值与显示文本不同
完全可以实现,LinqPad的SelectBox支持传入IEnumerable<SelectItem>类型的数据源,SelectItem包含Text(显示文本)和Value(提交值)两个属性,可完美区分显示内容与实际业务值。
示例代码(客户列表场景)
var yourChoice = new DumpContainer(); // 模拟客户数据:Text为显示名称,Value为业务ID var customerItems = new List<SelectItem> { new SelectItem { Text = "客户甲", Value = 1001 }, new SelectItem { Text = "客户乙", Value = 1002 }, new SelectItem { Text = "客户丙", Value = 1003 } }; var selectBox = new SelectBox(customerItems, 0, sb => { var selectedItem = (SelectItem)sb.SelectedOption; yourChoice.Content = $"显示名称:{selectedItem.Text} | 业务ID:{selectedItem.Value}"; // 传入业务ID到处理方法 ProcessCustomerById((int)selectedItem.Value); } ).Dump("选择客户"); yourChoice.Dump("选中结果"); // 业务处理方法 void ProcessCustomerById(int customerId) { $"开始处理ID为{customerId}的客户".Dump(); }
如果你的客户数据来自自定义类(比如Customer类包含Id和Name),可先转换为SelectItem集合:
List<Customer> rawCustomers = GetCustomerList(); // 假设获取客户列表的方法 var selectItems = rawCustomers.Select(c => new SelectItem { Text = c.Name, Value = c.Id }).ToList();
内容的提问来源于stack exchange,提问作者Thomas Adrian
相关产品推荐
相关产品推荐

