gpt4 book ai didi

c# - 如何在绑定(bind)到 DataTable 的 ComboBox 中插入 'Empty' 字段

转载 作者:IT王子 更新时间:2023-10-29 04:45:57 24 4
gpt4 key购买 nike

我在 WinForms 应用程序上有一个组合框,可以在其中选择一个项目,但这不是强制性的。因此,我需要一个“空”的第一项来指示尚未设置任何值。

组合框绑定(bind)到从存储过程返回的数据表(我对我的 UI 控件上的匈牙利符号表示歉意 :p ):

 DataTable hierarchies = _database.GetAvailableHierarchies(cmbDataDefinition.SelectedValue.ToString()).Copy();//Calls SP
cmbHierarchies.DataSource = hierarchies;
cmbHierarchies.ValueMember = "guid";
cmbHierarchies.DisplayMember = "ObjectLogicalName";

如何插入这样一个空项目?

我确实有权更改 SP,但我真的不想用 UI 逻辑“污染”它。

更新:这是我空白的 DataTable.NewRow(),谢谢。我已经更新了你们所有人(无论如何到目前为止所有 3 个答案)。在我决定“答案”之前,我试图让迭代器模式工作

更新:我认为这次编辑让我进入了 Community Wiki 领域,我决定不指定一个单一的答案,因为它们在各自领域的上下文中都有优点。感谢您的集体投入。

最佳答案

您可以做两件事:

  1. 向从存储过程返回的 DataTable 添加一个空行。

    DataRow emptyRow = hierarchies.NewRow();
    emptyRow["guid"] = "";
    emptyRow["ObjectLogicalName"] = "";
    hierarchies.Rows.Add(emptyRow);

    创建一个 DataView 并使用 ObjectLogicalName 列对其进行排序。这将使新添加的行成为 DataView 中的第一行。

    DataView newView =           
    new DataView(hierarchies, // source table
    "", // filter
    "ObjectLogicalName", // sort by column
    DataViewRowState.CurrentRows); // rows with state to display

    然后将数据 View 设置为 ComboBoxDataSource

  2. 如果您真的不想像上面提到的那样添加新行。您可以允许用户通过简单地处理“Delete”按键事件将 ComboBox 值设置为 null。当用户按下 Delete 键时,将 SelectedIndex 设置为 -1。您还应该将 ComboBox.DropDownStyle 设置为 DropDownList。因为这会阻止用户编辑 ComboBox 中的值。

关于c# - 如何在绑定(bind)到 DataTable 的 ComboBox 中插入 'Empty' 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/199642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com