gpt4 book ai didi

c# - DevExpress LookupEdit——通过代码设置选中的DataRow

转载 作者:行者123 更新时间:2023-11-30 18:03:07 25 4
gpt4 key购买 nike

我知道还有其他类似的问题,但他们的解决方案对我不起作用。

我有以下代码:

     lueSizes.Properties.DataSource = new BindingSource(PS.PaperSizes, null);
lueSizes.Properties.Columns.Add(new LookUpColumnInfo("PaperName", "Größe"));
lueSizes.Properties.DisplayMember = "PaperName";
lueSizes.Properties.ValueMember = "PaperName";

//PS is a regular System PrinterSettings object
foreach (PaperSize size in PS.PaperSizes)

//I confirmed with debugging that this actually happens correctly
if (size.RawKind == binSettings.SizeRawKind)
{
lueSizes.EditValue = size;
break;
}

用 DataSource 填充 LookupEdit 工作正常,用户可以从下拉列表中选择所需的 PaperSize,并且

lueSizes.GetSelectedDataRow() as PaperSize

然后按预期返回一个 PaperSize 对象。

我遇到的问题是设置 EditValue,它什么都不做。我已验证在运行时,DataSource 包含 PS.PaperSizes 中的所有 PaperSize 对象,包括在 foreach 循环中找到的对象。但设置 EditValue = size 不会导致所选数据行相应更新。

我尝试过的其他变体是:

lueSizes.EditValue = size.PaperName;

lueSizes.EditValue = lueSizes.Properties.GetKeyValueByDisplayText(size.PaperName);

lueSizes.EditValue = lueSizes.Properties.GetKeyValueByDisplayValue(size.PaperName);

lueSizes.EditValue = lueSizes.Properties.GetKeyValueByDisplayValue(size);

lueSizes.EditValue = 0;

这些都不做任何事情,所选数据行保持为 NULL 并且不向用户显示任何内容。

我还能尝试通过代码设置选定的 DataRow 吗?

编辑:

    private void lueSizes_EditValueChanged(object sender, EventArgs e)
{
object o = lueSizes.EditValue;
object p = lueSizes.GetSelectedDataRow();
PaperSize size = o as PaperSize;
UpdateSize(size);
}

对象o是我之前设置的项目,我在循环中找到的PaperSize大小,但是对象p是null。

最佳答案

我想我至少找到了解决方法:


BindingSource bindingSource = new BindingSource(PS.PaperSizes, null);
lueSizes.Properties.DataSource = bindingSource;
lueSizes.Properties.Columns.Add(new LookUpColumnInfo("PaperName", "Größe"));
lueSizes.Properties.DisplayMember = "PaperName";

foreach (PaperSize size in bindingSource)
if (size.RawKind == BinSettings.SizeRawKind)
{
lueSizes.EditValue = size;
break;
}

private void lueSizes_EditValueChanged(object sender, EventArgs e)
{
PaperSize size = lueSizes.EditValue as PaperSize;
Update(size);
}

首先,我让循环搜索 BindingSource,我现在必须明确定义它,而不是 Printersettings 对象。

接下来,我可能不会设置 DisplayValue 属性。

最后,我避免查找 DataRow 并直接获取编辑值。不知道有什么限制

我不知道还有什么问题,如果有的话,但现在它可以工作。

关于c# - DevExpress LookupEdit——通过代码设置选中的DataRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com