将组合框列数据绑定到每行(不是整列)的 datagridview

2024-06-29

有一些关于此的帖子,但经过几个小时的搜索后我仍然找不到我需要的东西。

下面帖子中的答案几乎让我得到了我想要的:DataGridView 中外键的组合框 https://stackoverflow.com/questions/2256924/combobox-for-foreign-key-in-datagridview

问题一:

离开产品具有多个许可证的示例,我的数据库映射都是多对一关系,这意味着我的许可证类保存对产品类的引用。 License 类没有 ProductId 属性,因为可以通过 Product 引用检索该属性。我不想为了使 UI 中的绑定更容易而同时引用 Product 和 ProductId 属性来搞乱 License 类。

因此我无法设置DataPropertyName到 Id 字段。它必须是类引用名称,如下所示:

DataGridViewComboBoxColumn dataGridViewComboBoxColumn = 
(DataGridViewComboBoxColumn)myDataGridView.Columns("LicenseComboBoxColumn");

dataGridViewComboBoxColumn.DataPropertyName = "License"; // not LicenseID

****更新**** 通过将 Product.Id 指定为 DataPropertyName,我可以在不创建 ProductId 属性的情况下使其部分工作,如下所示:

dataGridViewComboBoxColumn.DataPropertyName = "License.Id";

但是,这样做时,它破坏了数据绑定,导致我手动获取和设置单元格值。

我还看到过有关绑定到 DataGridView 单元格的帖子,但是当我这样做时数据绑定会中断,并且数据源本身永远不会更新:

// populate the combo box with Products for each License

foreach (DataGridViewRow row in myDataGridViewProducts.Rows) 
{
    IProduct myProduct = row.DataBoundItem as IProduct;
    DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)row.Cells("myProductCol");
    cell.DataSource = getListOfILicenseObjectsFromDao(myProduct.Id);
    cell.Value = myProduct.License.Id;
}

也许我做错了什么,或者也许有不同的方法。有人可以帮忙吗?

问题2:

如何显示每个产品的不同许可证列表? 换句话说,网格中每个产品的许可证组合框列表都将不同。我想使用数据绑定来执行此操作,这样我就不必自己获取和设置值。


我自己找到了答案。我不久前遇到了同样的问题,并在我挖掘的一些旧代码中找到了解决方案。解决方案是将 Self 属性添加到我想要在组合框中进行数据绑定的对象(在上面的示例中,它将是 License 类),并使用该属性作为 ValueMember,如下所示:

foreach (DataGridViewRow row in myDataGridViewProducts.Rows) 
{
    IProduct myProduct = row.DataBoundItem as IProduct;
    DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)row.Cells("myProductCol");
    cell.DataSource = getListOfILicenseObjectsFromDao(myProduct.Id);
    cell.DataPropertyName = "License";        
    cell.DisplayMember = "Name";
    cell.ValueMember = "Self"; // key to getting the databinding to work
    // no need to set cell.Value anymore!
}

License 类现在如下所示:

Public class License
{
    public string Name
    {
        get; set;
    }

    public ILicense Self
    {
        get { return this; }
    }

    // ... more properties
}

当然,我必须使用名为 Self 的属性来“搞乱”Business 类,但这比在 Product 类中同时引用 License 和 LicenseId 属性要好得多(程序员不会感到困惑)。另外,它使 UI 代码变得更加简单,因为无需手动获取和设置值 - 只需数据绑定即可完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将组合框列数据绑定到每行(不是整列)的 datagridview 的相关文章

  • 使用 Jackson 反序列化非字符串映射键

    我有一张如下所示的地图 public class VerbResult JsonProperty similarVerbs private Map
  • C# 如何更改 windows.forms.listview 中的网格线颜色

    如何更改 windows forms listview 中的网格线颜色 我认为没有办法在不覆盖 Paint Event 的情况下在列表视图上执行此操作 但是 如果您能够切换到网格视图 您可以这样做 this dataGridView1 Gr
  • 添加标签以绘制 R 中的特定值

    我使用以下数据集创建一个图 并且我想仅为 DisplayName 列中标有 T 的点添加标签 Probe Name DisplayName X Y bob1 A 0 53 989643 7935 185 bob2 B T 55 11423
  • Android:getIntent() 已弃用

    我的程序由一个 MainActivity 和两个片段活动组成 我需要一个片段从用户那里获取一个字符串值并将其传递给第二个片段 我正在努力思考如何做到这一点 由于我熟悉意图 我发现这个答案 https stackoverflow com qu
  • 使用多处理或线程加速单个任务

    是否可以使用多处理 线程来加速单个任务 我的直觉是答案是否定的 以下是我所说的 单一任务 的示例 for i in range max pick random choice on off both 当参数为 10000000 时 在我的系统
  • 配置 SourceTrail 以接受带有 @ 语法的嵌入式 c/c++ 头文件

    我正在尝试使用 Sourcetrail https www sourcetrail com https www sourcetrail com 快速了解 pic18 系列微控制器的一些旧嵌入式 c c 源代码 导入硬件包含文件时出现错误 该
  • 从 Google 地图中的纬度、经度搜索生成英国邮政编码

    我正在尝试通过 Google 地图中的纬度和经度搜索生成英国邮政编码 例如 在 Google 地图中搜索 57 350237 1 977539 将返回以下内容 https i stack imgur com mSULM png https
  • UIProgressView 没有更新?

    我已经开始在 iOS5 中使用 UIProgressView 但还没有真正使用它 我在更新视图时遇到问题 每次更新进度后 我都有一组连续的操作 问题是 进度视图不是一点一点更新的 而是在全部完成之后才更新 事情是这样的 float cnt
  • 如何使用元类中的方法更改 groovy 中方法的行为

    我想通过以下方式 破坏 Groovy 中的 plus 方法 Integer metaClass plus Integer n gt delegate n 1 assert 2 2 5 我收到 StackOverflowException 这
  • HTTPS文件下载C#

    我需要下载隐藏在 HTTPS 连接后面的文件 我对下载安全网站后面的文件不熟悉 我尝试使用凭据来解决此问题 但无济于事 据我所知 您需要创建并使用证书来完成此操作 但我没有找到任何示例 任何帮助表示赞赏 这就是我现在所拥有的 WebClie
  • FullCalendar 日期之间的分割线

    我正在使用 jquery fullcalendar 它工作得很好 但是在议程周视图中 日期之间没有分界线 我查看了 fullcalendar 网站 甚至试图找到 css 处理显示分界线的方式 但没有成功 如何显示日期分割线 Thanks 我
  • Oracle 难以管理简单任务的说法正确吗?没有优质的管理应用程序吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在这里看到这个说法是在咆哮中提出的http discuss joelonsoftware com default asp joel 3 456
  • 有人可以推荐 java 8 模式来替换 switch 语句吗?

    我有以下代码 public class A private String type String getType return type 现在在许多代码位置我都有这样的代码 switch a geType case A return new
  • 无法将 Angular 更新到版本 6

    我正在尝试将角度更新到最新版本 我已经更新了全局 angular cli npm install g angular cli 然后当我尝试使用更新本地 angular cli 时ng update angular cli我收到此错误 Err
  • 可以使用 libSegFault.so 获取 SIGABRT 的回溯吗?

    神奇的咒语 LD PRELOAD lib libSegFault so someapp runs someapplibSegFault so 提供有关 SIGSEGV 的回溯信息 如中所述many http blogs fau de wit
  • 快速判断文件是否为有效视频

    确定文件是否是可播放视频的最快方法是什么 我不关心它是否腐败 只关心它是否是哑剧类型should可以在 iPad 上播放 我玩过将文件推送到NSURL正如另一个问题所建议的 但每个文件可能需要 gt 1 秒 这太慢了 我目前正在查看文件扩展
  • 使用数据绑定后查看边距不起作用

    下面是gridview的item布局的代码 在此 layout margin 位于设计面板中 但当我运行时没有边距 我尝试检查其他标签 例如背景 发现它有效 类似的问题是线性布局的布局权重 它们也不起作用 这些在没有数据绑定的情况下工作得很
  • WKScriptMessageHandler 不会侦听网页上按钮元素上的“onclick”或“click”事件。网页是使用Reactjs开发的

    我正在使用一个WKWebView在 UIViewController 的视图中使用 url 端点显示托管在服务器上的网页 该网页使用Reactjs 这就是我所掌握的有关该网页的所有信息 该代码创建一个 Web 视图并将该 Web 视图作为控
  • 从 pexpect 中提取 stderr

    我的问题很简单 我可以吗 expect 使用 pexpect 查看 stderr 上的某些输出 它似乎pexpect spawn 只能用于期望 stdout 上的输出 乌托邦的例子 import pexpect child pexpect
  • Python 内存使用情况

    因此 我有一些代码接收一组文件 将其可以缝合在一起 然后绘制它们 我发布了大部分代码 试图使其更具可读性 如果需要 可以添加更多代码 for paths dirs files in os walk start path for d in d

随机推荐

  • 如何覆盖 Template Toolkit 模板文件中的 WRAPPER?

    有没有办法禁用WRAPPER那是设置在新的 配置 http search cpan org dist Template Toolkit lib Template pm 通过模板或临时覆盖parse 我想要一个默认值WRAPPER 我将用于
  • 折叠 numpy 数组除前两个维度之外的所有维度

    我有一个可变维度的 numpy 数组 例如它可以具有以下形状 64 64 64 64 2 5 64 64 40 64 64 10 20 4 我想要做的是 如果维数大于 3 我想将其他所有内容折叠 堆叠到第三维中 同时保留顺序 因此 在我上面
  • 如何打印正在使用的实际 MAVEN_OPTS?

    有没有办法让maven在构建过程中输出环境和maven变量的值 当出现问题时 这对于调试非常有用 您可以使用Maven 帮助插件 http maven apache org plugins maven help plugin and hel
  • Perl 和 MySql 中的 utf8 编码

    我的数据库 MySql 有 utf8 general 排序规则 我正在从数据库访问数据并显示一个网页 用 Perl 开发 它显示瑞典语字符 和不同的字符 我检查了Mysql数据库 在那里我可以看到其中包含 字符的数据 看来 访问数据时存在编
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • 根据值绘制具有条件颜色的折线图

    我想绘制折线图 根据值 它应该改变它的颜色 我发现的是 plot sin seq from 1 to 10 by 0 1 type p col ifelse sin seq from 1 to 10 by 0 1 gt 0 5 red ye
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • 服务帐户的 Keycloak uma-grant 类型票证似乎不适用于策略

    我正在尝试使用 Keycloak AuthzClient 在资源服务器中注册资源和相 关权限 我有一个启用了 authz 服务的资源服务器 resourceserver 使用 AuthzClient 使用包含资源服务器的客户端 ID 和机密
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • Finalize() 何时执行? [复制]

    这个问题在这里已经有答案了 在一次采访中我被问到 假设 JVM 在 A 类对象未被使用时运行 gc class A some code here protected void finalize code here 它是否保证finalize
  • 如何为所有导航控制器和视图控制器设置自定义导航栏(标题 + titleView)?

    我有一个选项卡式应用程序 选项卡中有导航控制器 其中有视图控制器 它们都使用相同的导航控制器导航栏 后退按钮 徽标图像 目前 我将此代码放置在每个视图控制器中 void viewDidLoad super viewDidLoad self
  • 如何为广播身份验证路由定义或传递身份验证守卫而不是默认身份验证守卫?

    我对实时事件广播非常陌生 我有简单的 laravel echo server 设置并处理所有内容 我无法针对其他身份验证设置 定义身份验证guard它总是检查user default guard定义于auth php我已经为每个守卫私人通道
  • Visual Studio 2010:嵌入互操作类型

    我在上找到了一些关于此的信息斯科特 汉塞尔曼斯博客 http www hanselman com blog CLRAndDLRAndBCLOhMyWhirlwindTourAroundNET4AndVisualStudio2010Beta1
  • RecyclerView:调整项目大小的动画

    我有一个RecyclerView 回收者视图的每个项目都可以展开或不展开 同一时间只能展开一项 本质上 我试图在棒棒糖拨号器中重新创建历史列表 我发现在 RecyclerView 上使用 LayoutTransition https sta
  • pip 升级到 pip 10.x.x 后解析需求文件的正确方法?

    所以今天我确实发现随着发布pip 10 x x the req软件包更改了其目录 现在可以在下面找到pip internal req 由于通常的做法是使用parse requirements功能在你的setup py从需求文件中安装所有依赖
  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Aptana 函数定义弹出窗口

    我注意到在 Aptana 2 0 和 1 5 1 中 当输入 php 函数时 您不再看到显示函数描述及其参数的弹出窗口 有谁知道如何让它再次工作 因为我非常依赖它来记住哪些参数去了哪里 Open in PHP Manual捷径Shift F
  • 不接受基于脚本的保留关键字,但在标记中接受

    在这里我提出一个问题保留字 据我所知 关键字不能是变量 我遇到了一个问题 即在两个基于脚本的代码中将保留字字符串作为参数传递 但在基于标签的代码中编写相同的代码时不会遇到任何错误 我的问题是 我将参数名称传递为For 如果它是保留字意味着我
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 将组合框列数据绑定到每行(不是整列)的 datagridview

    有一些关于此的帖子 但经过几个小时的搜索后我仍然找不到我需要的东西 下面帖子中的答案几乎让我得到了我想要的 DataGridView 中外键的组合框 https stackoverflow com questions 2256924 com