2009-01-14 152 views
0

我正在使用Sybase Datawindow.net的Winforms應用程序。基本上我有一個數據窗口檢索數據(dw_retailer.Retrieve(id)),我得到的是一個對象列表。標籤和文本框的數據窗口本身excists和我結合這樣將數組轉換爲對象[]

newRetailer.foto1 = ((object[])(dataWindowControl.PrimaryData.Rows[0]))[7].ToString(); 
newRetailer.foto2 = ((object[])(dataWindowControl.PrimaryData.Rows[0]))[6].ToString(); 

我想現在做的是把一個字符串轉換爲對象[]列表這樣

((object[])(_targetForm.dw_retailer.PrimaryData.Rows[0]))[5] = retailer.text; 

但很明顯的是,數據不工作。

((object[])(_targetForm.dw_retailer.PrimaryData.Rows[0])).SetValue(retailer.text,5); 

即doenst工作或者(索引超出範圍)本書雖然它具有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設計器應用程序中選擇的設置。如何將數組轉換爲object [],以便將其放回到_targetForm.dw_retailer.PrimaryData.Rows中。它甚至可以編輯數據窗口嗎?


仍然沒有工作馬克

IList list = ((IList)(_targetForm.dw_retailer.PrimaryData.Rows[0])); 
list[5] = retailer.text; 

retailer.text具有值 「tekst」 列表[5]是不變的。

它不是完全添加項目,更像是編輯項目。關於索引超出範圍,我知道列表中只有8個項目,這就是爲什麼我覺得第五個是索引輸出或範圍很奇怪的原因。也許我只是不明白.SetValue()那麼好。

感謝IList壽!但是,如何將IList轉換回對象[]?

回答

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。

現在大家都知道了!

0

你說這是一個「對象列表」;而不是固定在object[],非通用IList怎麼樣?

((IList)(_targetForm.dw_retailer.PrimaryData.Rows[0]))[5] = retailer.text; 

這應該支持陣列,列表等

重新索引-外的範圍; C#索引幾乎總是從零開始的,所以如果列表中有9個項目,最後一項是array[8]。如果你想添加項目,IList優先:list.Add(foo)

1

回覆:轉換列表中的對象,你可以只是做手工的方式:

object[] objs = new object[list.count]; 
for (int i=0; i < list.Count; i++) { 
    objs[i] = list[i]; 
} 

這是一個有點笨拙,但其意圖是清楚的,它會工作:-)。

+0

這有點骯髒:)但謝謝你的信息! – Dean 2009-01-14 09:50:56

0

這可能不會回答你的直接問題,但我認爲它可能會解決你的意圖。 DataWindow控件具有專門用於更改緩衝區內數據的GetItem()和SetItem()方法。有了這些,你就不必擔心一堆物體了。