devexpress 的表格数据显示问题

qpalzmn001 2014-09-08 03:16:14
用gridControl表格做单据输入,通过RepositoryItemSearchLookUpEdit来内容选择,其中两列(货品名称,规格型号)有级联关系,规格是根据货品从数据库中筛选出相对的内容(通过Gdv_CustomRowCellEditForEditing事件在点击规格型号一这列时开始筛选)。

我的输入是:
货品名称 规格型号
螺丝刀 一字 (其他的还是十字,梅花等)
钉子 钢钉 (其他的还有铜钉,混泥土钉等)
开关 86型1插 (其他的还有86型2插,118型1插等)

现在出现一个问题,因为规格型号在每一行的数据源都是不同的,当我点到第三行时,数据源中没有了一字和钢钉这样的内容,直接导致第一行和第二行的规格型号显示空白。当我重点到第一行的规格型号列时,一字又出来了,其他两个又变空白了,通过GetFocusedRowCellValue("规格型号")又可以从空白的规格型号列中取出实际的内容。分析过来应该是RepositoryItemSearchLookUpEdit是绑定了整个列,这一列里所有的单元格里的内容如果在RepositoryItemSearchLookUpEdit数据源里没有就会以空白表示,但他实际上又是有值的。
请教有没有办法解决这个问题,使规格型号输入了就定到表格上,不会随着数据源变化而变化
...全文
554 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpalzmn001 2014-09-14
  • 打赏
  • 举报
回复
牛人,正是我要的!
引用 7 楼 davinciyxw 的回复:
        void lookupedit_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
        {
            if (string.IsNullOrEmpty(e.DisplayText) && e.Value != null)
            {
                e.DisplayText = e.Value.ToString();
            }
        }
以前遇到过这个问题,是这样临时解决的
  • 打赏
  • 举报
回复
        void lookupedit_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
        {
            if (string.IsNullOrEmpty(e.DisplayText) && e.Value != null)
            {
                e.DisplayText = e.Value.ToString();
            }
        }
以前遇到过这个问题,是这样临时解决的
qpalzmn001 2014-09-10
  • 打赏
  • 举报
回复
嗯,原因我知道了,那有办法让editvalue属性做为显示属性吗?
引用 5 楼 happy09li 的回复:
[quote=引用 4 楼 qpalzmn001 的回复:] 我发现在我数据源变化后,editvalue值还是原值,只是text值变成了空值,有没有办法让editvalue的内容成为默认显示表示出来的内容
那是因为列表上面RepositoryItemSearchLookUpEdit控件没有Value对应 text去显示 所以显示的是空[/quote]
熙风 2014-09-10
  • 打赏
  • 举报
回复
引用 4 楼 qpalzmn001 的回复:
我发现在我数据源变化后,editvalue值还是原值,只是text值变成了空值,有没有办法让editvalue的内容成为默认显示表示出来的内容
那是因为列表上面RepositoryItemSearchLookUpEdit控件没有Value对应 text去显示 所以显示的是空
熙风 2014-09-09
  • 打赏
  • 举报
回复
你是怎么动态绑定绑定 规格型号 列的? 我之前动态绑定 RepositoryItemImageComboBox 是这么做的
private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_A = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
        private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_B = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
        private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_C = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
		
		

		private void bindData()
		{
		repositoryItemImageComboBox_A,repositoryItemImageComboBox_B,repositoryItemImageComboBox_C //绑定数据
		}
		

 private void gvProduct_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
        {
            string fieldName = e.Column.FieldName;
            if (fieldName == "规格型号")
            {
                int name = Convert.ToInt32(_SelectRow["货品名称"]);
                if (name =="螺丝刀")
                    e.RepositoryItem = repositoryItemImageComboBox_A;
                else if (name == "钉子")
                    e.RepositoryItem = repositoryItemImageComboBox_B;
                else
                    e.RepositoryItem = repositoryItemImageComboBox_C;
            }
qpalzmn001 2014-09-09
  • 打赏
  • 举报
回复
我发现在我数据源变化后,editvalue值还是原值,只是text值变成了空值,有没有办法让editvalue的内容成为默认显示表示出来的内容
qpalzmn001 2014-09-09
  • 打赏
  • 举报
回复
你这个是不是每一行都绑定不同的 repositoryItem啊,货品几千种呢,那不是要定义几千个了,如果用动态全部产生,会很占资源吧
引用 2 楼 happy09li 的回复:
你是怎么动态绑定绑定 规格型号 列的? 我之前动态绑定 RepositoryItemImageComboBox 是这么做的
private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_A = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
        private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_B = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
        private DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox repositoryItemImageComboBox_C = new DevExpress.XtraEditors.Repository.RepositoryItemImageComboBox();
		
		

		private void bindData()
		{
		repositoryItemImageComboBox_A,repositoryItemImageComboBox_B,repositoryItemImageComboBox_C //绑定数据
		}
		

 private void gvProduct_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
        {
            string fieldName = e.Column.FieldName;
            if (fieldName == "规格型号")
            {
                int name = Convert.ToInt32(_SelectRow["货品名称"]);
                if (name =="螺丝刀")
                    e.RepositoryItem = repositoryItemImageComboBox_A;
                else if (name == "钉子")
                    e.RepositoryItem = repositoryItemImageComboBox_B;
                else
                    e.RepositoryItem = repositoryItemImageComboBox_C;
            }
exception92 2014-09-09
  • 打赏
  • 举报
回复
参见:https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsRepositoryRepositoryItemSearchLookUpEdittopic 既然绑定了整个列,不会不随数据源的变化而变化。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧