调用 ReadInDataFromRssAndReturnArrayWithTheDataStatic 时出现错误,因为 DataSource 无法存储在 CopyTo 方法中指定的数组中。
我想知道我应该如何找到我应该使用的数组类型。下面是我的一些代码:
public static class StillingslisteStatic
{
public static string RssSourceStatic { get; set; }
public static string StillingssideStatic { get; set; }
//This contains all of the data from the rss-file!!
public static PagedDataSource PgdsPositionsStatic { get; set; }
//This function is written by Anders Branderud
public static DataView[] ReadInDataFromRssAndReturnArrayWithTheDataStatic(PageData ledigeStillingerPage)
{
DataView[] myObjArray = null; //I also tried with DataTable
if (ledigeStillingerPage["Stillingsside"] != null)
StillingssideStatic = ledigeStillingerPage["Stillingsside"].ToString();
if (ledigeStillingerPage["RssSource"] != null) RssSourceStatic = (string)ledigeStillingerPage["RssSource"];
if (!string.IsNullOrEmpty(RssSourceStatic))
{
FilterTableStatic(LoadFeedStatic(RssSourceStatic, ledigeStillingerPage), 100); //This initializes PgdsPositionsStatic
myObjArray = new DataView[PgdsPositionsStatic.Count]; //one DataTable is one item
PgdsPositionsStatic.CopyTo(myObjArray, 0);
}
return myObjArray;
}
private static DataTable LoadFeedStatic(string url, PageData ledigeStillingerPage)
{
var reader = new XmlTextReader(url);
var ds = new DataSet();
ds.ReadXml(reader);
foreach (DataTable table in ds.Tables)
{
if (table.TableName == "item")
{
return table;
}
}
return null;
}
private static void FilterTableStatic(DataTable table2Filter, int count)
{
PgdsPositionsStatic = new PagedDataSource();
if (table2Filter == null) return;
int counter = 1;
var deleteItems = new DataRow[table2Filter.Rows.Count];
foreach (DataRow row in table2Filter.Rows)
{
if (counter > count)
deleteItems[counter - count] = row; ;
counter++;
}
for (int i = 0; i < (counter - count); i++)
{
var row = (DataRow)deleteItems[i];
if (row == null)
continue;
table2Filter.Rows.Remove(row);
}
PgdsPositionsStatic.DataSource = table2Filter.DefaultView;
}
错误信息:
{"Message":"Object cannot be stored in an array of this type.","StackTrace":" at System.Array.InternalSetValue(Void* target, Object value)\r\n at System.Array.SetValue(Object value, Int32 index)\r\n at System.Web.UI.WebControls.PagedDataSource.CopyTo(Array array, Int32 index)\r\n at