C#简单——多选框控件相关的神奇问题

news/2024/4/30 14:37:46

他们真的很简单,但我怎么总是忘记啊QAQ
还是记下来吧,下次直接copy

点开后出现 有列名 列名有数据,有表 表里有数据但不显示的情况

解决:点击小三角-点击Design View-Columns-需要在这里对下拉列表里的内容进行对应配置。

  1. 在这里插入图片描述
  2. 在这里插入图片描述

多选框赋值了,但运行时显示空白。点开后才有值?

ValueMember和EditValue的格式要匹配,规章制度,必须完全吻合!!!

类型为varchar(50) ProductNo的值是123-qwe,类型为nvarchar(50) ProductName的值是12345,nvarchar是包含varchar的,塞进去的也是两个类型都能读的格式,那为什么还会出现无法赋值的情况

我理解你的困惑。事实上,nvarcharvarchar在数据库中都用于存储字符串,其中nvarchar用于存储Unicode字符串(可以包含任何字符,包括中文、阿拉伯文等),而varchar则通常用于存储非Unicode的字符集(例如仅限ASCII字符)。尽管nvarchar可以包含varchar的所有可能值,但这并不意味着在所有情况下nvarcharvarchar字段的值可以随意互换。

在你的例子中,当你说“无法赋值”,很可能你的意思是赋值操作没有达到预期的效果。这通常不是因为数据类型的问题,而是因为赋值的上下文问题。例如,在UI控件(比如你提到的SearchLookUpEdit)中,它期望的EditValue通常必须匹配指定的ValueMember字段。如果ValueMember设置为ProductNo,则这个控件期望的EditValue应该是一组ProductNo的值。如果你尝试将ProductName的值赋给EditValue,即使ProductName的类型是nvarchar并且理论上可以包含ProductNo的值,但从控件的角度,这仍然是不匹配的,因为它期望的是一个ProductNo的值。

让我们用一个简单的生活例子来形象化:

想象你的手机通讯录,其中每个联系人有一个姓名和一个电话号码。假设你有一个功能,要求你通过电话号码查找联系人,而不是姓名。电话号码在这里就像是ValueMember,它是查找联系人的关键。

如果你输入电话号码,手机能够找到并显示相关联系人的姓名。但是,如果你试图通过输入姓名来查找联系人,这个功能是不会工作的,因为它只能通过电话号码识别联系人,即使姓名字段也包含文本信息,且在技术上电话号码字段(假设是varchar类型)也能存储姓名(nvarchar类型)的值。

同样的道理适用于SearchLookUpEdit控件。Control需要ProductNo(类似于电话号码)作为识别的关键,即使ProductName(类似于姓名)的数据类型允许存储类似的值。控件根据其设计只接受和ValueMember匹配的EditValue进行显示和选择操作。

希望这个例子帮助你更清楚地理解为什么即便nvarchar包括varchar,在特定的UI控件和赋值上下文中,你仍然需要确保赋值是按照控件的逻辑和数据源配置来进行的。

varchar(50)和nvarchar(50)有什么区别?

ProductNovarchar(50) 类型,而 ProductNamenvarchar(50) 类型,这表明它们用来存储字符串,但具有不同的字符编码特性。

varcharnvarchar 的区别在于:

  1. 字符编码
    • varchar 代表 Variable Character,是非 Unicode 的可变长度字符数据类型。它用来存储非 Unicode 字符(即 ASCII 字符集),因此每个字符占用 1 个字节的空间。
    • nvarchar 代表 National Variable Character,是 Unicode 的可变长度字符数据类型。它用来存储 Unicode 字符(包括 ASCII 以及其他多字节字符集如汉字、日文等),因此每个字符通常占用 2 个字节的空间。

varchar和nvarchar都是用于存储字符数据的数据类型。
varchar 表示可变长度的非Unicode字符数据类型。这意味着varchar只能存储ASCII字符集(包括英文字符),并且在存储时占用较少的存储空间。因此,英文字符可以存储在varchar类型的字段中,并且可以被正确读取。
nvarchar 表示可变长度的Unicode字符数据类型。与varchar不同,nvarchar可以存储Unicode字符集中的字符,包括英文字符和其他语言的字符。因此,nvarchar类型可以存储各种语言的字符,并且可以被正确读取。
总的来说,英文字符可以被正确读取和存储在varchar和nvarchar类型的字段中,而nvarchar还可以存储其他语言的字符。

  1. 存储容量

    • varchar(50) 可以存储最多 50 个非 Unicode 字符。
    • nvarchar(50) 可以存储最多 50 个 Unicode 字符,但由于它使用双字节存储,所以实际上将占用最多 100 个字节的存储空间(如果全部是 Unicode 字符)。
  2. 应用场景

    • 如果数据列只包含英文字符和西欧字符集,则通常使用 varchar 就足够了。
    • 如果数据列可能包含多语言文本,例如中文、日文、阿拉伯文等,则必须使用 nvarchar 以支持这些字符集。

至于为什么使用 ProductName 设置 EditValue 时显示为空白,这和 varcharnvarchar 的区别不一定有直接关系。关键在于 SearchLookUpEdit 控件的 EditValue 应该匹配 ValueMember 指定的列的数据类型和值。如果 ValueMember 设置为 ProductNo,那么你应该提供一个相应的 ProductNo 字段的值给 EditValue,而不是 ProductName 字段的值。

如果确实存在字符编码的问题(比如 ProductNo 中含有特殊字符),则需要确保当你设置 EditValue 时提供的值在编码上与数据库中的值完全一致。在比对和赋值时,可能需要考虑编码转换的问题,特别是在涉及不同编码类型的数据迁移或数据导入时。


vs控件右上角的小三角叫什么

在Visual Studio中,控件右上角的小三角通常称为“快捷菜单”(Context Menu)或“上下文菜单”(Context Menu)。这个菜单提供了与该控件或编辑器上下文相关的操作选项。右击控件或编辑器的某个区域,就会弹出这个上下文菜单,让你可以快速执行一些常用的操作,而不必在菜单栏中查找相应的命令。这个功能有助于提高开发效率,特别是在复杂的集成开发环境中。


是DevExpress.XtraGrid.GridControl控件前面多了个格,可以进行勾选,我想知道怎么取消

在gc里无法取消,要在gv里取消
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

WP Rocket v3.15.10最新版强大的WordPress缓存插件

WP Rocket v3.15.10是一款强大的WordPress缓存插件,它通过一系列优化措施来提高网站的速度和性能。 WP Rocket与免费缓存插件相比,提供了更丰富和高级的自定义设置功能。这些包括媒体优化、预加载、延迟加载和数据库优化等。特别是对于没有任何缓存技术…

java自动化学习-03-02java基础语法01

1、java基础语法 在JAVA中源文件名称必须和主类名称相同 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为 文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文…

一场人生的风险控制,商业社会识人指南

一、资料前言 本套社会识人资料,大小679.94M,共有37个文件。 二、资料目录 识人的终极目的:一整场人生的风险控制.pdf 信任的搭建:更多的时间与维度.pdf 没有搞不定的人!角色人格与全面人格.pdf 政治不正确的正确…

数据可视化-Python

师从黑马程序员 Json的应用 Json的概念 Json的作用 Json格式数据转化 Python数据和Json数据的相互转化 注:把字典列表变为字符串用dumps,把字符串还原回字典或列表用loads import json#准备列表,列表内每一个元素都是字典,将其转化为Json …

24 个Intellij IDEA好用插件

24 个Intellij IDEA好用插件 一. 安装插件 Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句,这也太智能了,还显示了每条语句使用频率。 原因是它学习了我的项目代码,总结出了我的代码偏好。 Key Promoter X 快捷键提示插件 …

vue项目引入微信sdk: npm install weixin-js-sdk --save报错

网上查到要用淘宝的镜像 同事告知旧 域名:https://registry.npm.taobao.org/已经不能再使用 使用 npm config set registry http://registry.npmmirror.com