我正在使用Sybase Datawindow.net的winforms应用程序。基本上我有一个检索数据的数据窗口(dw_retailer.Retrieve(id)),我得到的是一个对象列表。数据窗口本身就是标签和文本框,我就像这样绑定数据
newRetailer.foto1 = ((object[])(dataWindowControl.PrimaryData.Rows[0]))[7].ToString();
newRetailer.foto2 = ((object[])(dataWindowControl.PrimaryData.Rows[0]))[6].ToString();
我现在要做的是将一个字符串放入object []列表中,如下所示
((object[])(_targetForm.dw_retailer.PrimaryData.Rows[0]))[5] = retailer.text;
但显然这不起作用。
((object[])(_targetForm.dw_retailer.PrimaryData.Rows[0])).SetValue(retailer.text,5);
那也是最好的工作(索引超出范围),尽管它有9个对象
_targetForm.dw_retailer.PrimaryData.Rows[0] {object[9]} object {object[]}
也是这样尝试
Array arrayList = _targetForm.dw_retailer.PrimaryData.Rows.ToArray();
arrayList.SetValue(retailer.text, 0,5);
数组不是多维的。因为我需要对象中的对象所以我需要arrayList [0] [5],但这也是最好的。
我甚至不知道它是否只是我必须在DataWindow Designer应用程序中选择的设置。如何将数组转换为object [],以便将其放回_targetForm.dw_retailer.PrimaryData.Rows中。甚至可以编辑数据窗口吗?
仍然没有工作Marc
IList list = ((IList)(_targetForm.dw_retailer.PrimaryData.Rows[0]));
list[5] = retailer.text;
retailer.text的值为“tekst” list [5]没有变化。
这并不是完全添加项目,更像是编辑项目。关于索引超出范围,我知道列表中只有8个项目,这就是为什么我觉得奇怪的是第五个是索引输出或范围。也许我只是不明白.SetValue()那个。
感谢IList!但是如何将IList转换回object []?
答案 0 :(得分:1)
Re:将列表转换为对象,您可以手动执行:
object[] objs = new object[list.count];
for (int i=0; i < list.Count; i++) {
objs[i] = list[i];
}
这有点夸张,但它的意图很清楚,它会起作用: - )。
答案 1 :(得分:1)
_targetForm.dw_retailer.SetColumn(6);
_targetForm.dw_retailer.SetText(retailer.text);
_targetForm.dw_retailer.SetColumn(9);
_targetForm.dw_retailer.SetText(retailer.webname);
首先,您必须使用SetColumn激活要编辑的控件,然后调用SetText。
现在每个人都知道!
答案 2 :(得分:0)
你说它是一个“对象列表”;而不是注意object[]
,非通用IList
怎么样?
((IList)(_targetForm.dw_retailer.PrimaryData.Rows[0]))[5] = retailer.text;
那应该支持数组,列表等。
重新指数超出范围; C#索引几乎总是从零开始,因此如果列表中有9个项目,则最后一项为array[8]
。如果您要添加项目,则首选IList
:list.Add(foo)
答案 3 :(得分:0)
这可能无法解答您的直接问题,但我认为这可能会解决您的意图。 DataWindow控件具有专门用于更改缓冲区内数据的GetItem()和SetItem()方法。有了这些,您根本不必担心一系列对象。