datagridview动态添加下拉列表_【勤哲资料】6.2 动态取值的下拉列表

本文介绍了如何在datagridview中动态添加下拉列表,并通过实例演示了在订单模板中设置‘客户名称’的数据规范。内容包括定义下拉列表数据规范,设置数据来源,指定排序方式,以及在填报时允许手工输入的选择。此外,还提供了练习,让用户尝试不同的数据规范设置以了解其影响。
摘要由CSDN通过智能技术生成

df74867eb5a90aa05a3b114c5fead000.gif

动态取值的下拉列表

在上一章,我们学习过“下拉列表”这种数据规范,现在我们为订单上的“客户名称”定义下拉列表。

  1. 用 Admin 帐户 登录,进入设计栏目。

  2. 分类树中选中“数据规范 — 下拉列表”,点击列表工具栏按钮【新建】,弹出“定义下拉列表数据规范”窗口。

e1ee19a78763fed5e19f60fa5b0c4a26.png

图6‑8动态取值的下拉列表

  1. 输入下拉列表名称为“客户名称列表”,数据来源选择“来自数据表”,并在其右侧的下拉列表中选择“客户表”(如果随着所定义的模板增多,下拉列表中的表名太多不易选择,还可以 点击表 名下拉右侧的【选择 … 】按钮,从弹出窗口中选择需要的表名)

  2. 当选择了数据表表名后,该表中的字段或出现在“下拉取值字段”和“排序字段”两个下拉列表中,本例中,我们设置下拉取值字段和排序字段都是“客户名称”,排序方式为“升序”。

  3. 按【确定】

  4. 回到设计栏目,在“功能模块”中找到《订单》模板,调出其“管理数据表”窗口,设置“订单 _ 主表”中“客户名称”字段的数据规范是“客户名称列表”。

45ad37072bad1cb9cc3fae8c8ac98040.png

图6‑9

点击【确定】

现在用张三的帐户登录,来填报一份订单,我们看到,“客户名称”处出现了下拉列表,其中的内容是我们已经输入的两张客户登记表中的客户名称。

b319f54d247d06b42fe7881657accfd0.png

图6‑10

注意几点:

  1. 客户名称下拉列表中显示的客户名称是按升序排列,因为我们在定义下拉列表的时候指定了排序顺序。

  2. 将输入焦点放在“客户名称”字段的位置上,输入一个下拉列表中不存在的客户名称“丙公司”,系统弹出如下的提示,点【确定】,则输入的内容保留在客户名称字段的位置上;这是因为我们在管理数据表中关联“客户名称列表“的时候勾选了“填报时允许手工输入”,即用户输入了不在下拉中的内容,系统也可以接受;作为一个练习,您可以试着将关联数据规范“客户名称列表“时将“填报时允许手工输入”的勾选去掉,再来填报并输入一个不存在的客户名称,看看系统会给出什么样的提示。

a5dd9aa4479fce5e5e95de0b7d14613b.png

图6‑11

练习
  1. 修改管理数据表中关联的下拉列表“客户名称列表”,去掉“填报时允许手工输入”的勾选,然后填报一张订单,在客户名称处手工输入一个下拉中不存在的客户名称,看看系统有什么反映。

  2. 复习上一章,在订单模板上设置如下数据填写规范:

    1. 订单编号自动生成

    2. 录入人默认为当前用户姓名

    3. 订单日期默认为当前日期

  3. 多输入一些客户登记表信息

04a92427dc0bbc1051e3a3c0cfc0cc77.gif

fa16066fbeb326eb99ae63dab14edb0a.png

在WinForm,如果你想在DataGridView使用下拉列表框,你可以通过监听DataGridView的CurrentCellChanged事件来实现。在事件处理程序,你可以获取当前单元格所属的列,并判断是否是需要显示下拉列表的列。如果是,你可以获取当前单元格的位置和大小,并将下拉列表框的位置和大小设置为相同。然后,你可以将单元格的内容显示为下拉列表框的当前项。最后,在下拉列表框的SelectedIndexChanged事件,你可以将选择的项更新到DataGridView相应的单元格。 以下是一个示例代码供参考: private void dataGridView1_CurrentCellChanged(object sender, EventArgs e) { DataGridViewColumn column = dataGridView1.CurrentCell.OwningColumn; if (column.Name.Equals("Column2")) // 如果是要显示下拉列表的列的话 { int columnIndex = dataGridView1.CurrentCell.ColumnIndex; int rowIndex = dataGridView1.CurrentCell.RowIndex; Rectangle rect = dataGridView1.GetCellDisplayRectangle(columnIndex, rowIndex, false); comboBox1.Left = rect.Left; comboBox1.Top = rect.Top; comboBox1.Width = rect.Width; comboBox1.Height = rect.Height; string consultingRoom = dataGridView1.Rows\[rowIndex\].Cells\[columnIndex\].Value.ToString(); int index = comboBox1.Items.IndexOf(consultingRoom); comboBox1.SelectedIndex = index; comboBox1.Visible = true; } else { comboBox1.Visible = false; } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (dataGridView1.CurrentCell != null) { dataGridView1.CurrentCell.Value = comboBox1.Items\[comboBox1.SelectedIndex\]; } } // 将下拉列表框加入到DataGridView的控件集合内,否则下拉列表框不会显示在你点击的单元格上 dataGridView1.Controls.Add(comboBox1); 请注意,这只是一个示例代码,你需要根据你的具体需求进行适当的修改和调整。 #### 引用[.reference_title] - *1* *2* *3* [Winform datagridview显示下拉框示例](https://blog.csdn.net/Pei_hua100/article/details/124492408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值