datagridview中的外键数据绑定-具有很多行的组合框

问题描述 投票:0回答:1

我是开发软件的新手,需要一些帮助。

我正在创建一个具有DataGridView的WinForm。 DataGridView显示表Schedule,其中包含FromPortID和ToPortID。这两个字段的值应与相关表PortCode中的外键匹配。 PortCode表具有PortCodeID和PortName。

在DataGridView中,我现在具有FromPort和ToPort的PortCodeID。我需要允许用户输入新记录,但与其输入PortCodeID,不如输入或选择PortName。

为此我创建了一个ComboBox列:

var adaper = new SqlDataAdapter("SELECT * FROM PortCode order by PortName", Helper.CnnVal("ShipMaster"));
var dataTable = new DataTable();
adaper.Fill(dataTable);
var ComboBoxColumn = new DataGridViewComboBoxColumn();
ComboBoxColumn.Name = "FromPortComboBoxColumn";
ComboBoxColumn.HeaderText = "FromPort";
ComboBoxColumn.DataSource = dataTable;
ComboBoxColumn.DataPropertyName = "FromPortID";
ComboBoxColumn.DisplayMember = "PortName";
ComboBoxColumn.ValueMember = "PortCodeId";
this.dgv.Columns.Add(ComboBoxColumn); 

这有效。如果更改组合框中的选择,则相关的FromPortID也会更改。但是问题是PortCode表包含7000条记录。打开下拉列表需要2到5秒钟-这是包含此ComboBox的每个单元格的时间。我添加了自动完成功能,并且可以正常工作。但是性能仍然很差。

我想在这种情况下,使用ComboBox不是最佳设计。您能否给我一些有关如何将其作为经验丰富的程序员来实现的反馈意见:)

c# winforms datagridview lookup
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.