Avatar billede websam Nybegynder
22. maj 2006 - 18:46 Der er 8 kommentarer og
2 løsninger

Argument 'SourceArray' cannot be converted to type 'String'

Jeg laver en :

    Private IDList As ArrayList = New ArrayList

Derefter laver jeg denne, som modtager en arraylist fra databasen igennem mit n-Tire :

    IDList = objBLL.GetAll(TableName, "", SetSorting(), ColumnsToRetrieve)

Når jeg så forsøger at lave denne :

    Dim CurrentSubset As String = Join(IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray, ",")

Får jeg denne fejl :

    Argument 'SourceArray' cannot be converted to type 'String'.

Sidder der en der kan hjælpe mig med at få det rettet til ?
Avatar billede dr_chaos Nybegynder
22. maj 2006 - 19:19 #1
prøv lige at udskrive:
IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray.GetType
Avatar billede dr_chaos Nybegynder
22. maj 2006 - 19:22 #2
for at se hvilken type af array du får ud.
Det er formodentlig et array af objekter.
Avatar billede websam Nybegynder
22. maj 2006 - 19:50 #3
Når jeg udskriver den får jeg System.Object[]

???

/Websam
Avatar billede dr_chaos Nybegynder
22. maj 2006 - 19:58 #4
Det betyder at dit array er et object array.
Derfor kan du ikke gøre det som du forsøger.
En besværgelig måde:
string[] arr = new string[IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray().Count];

for(int i=0;i<IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray().Count; i++)
{
arr[i] = IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray()[i];

}


//lav join
Avatar billede websam Nybegynder
23. maj 2006 - 10:53 #5
Når jeg oversætter det til VB og sætter det ind i min kode får jeg følgende fejl :

Disse linier :
    Dim arr(IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray.Count) As String
    While i < IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray.Count

Giver denne fejl :
    'Count' is not a member of 'System.Array'

Og i'et sidst i denne linie :
    arr(i) = IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray(i)

Giver denne fejl :
    Value of type 'Integer' cannot be converted to 'System.Type'


Den samlede oversættelse ser således ud :
    Dim arr(IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray.Count) As String
    Dim i As Integer = 0
    While i < IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray.Count
        arr(i) = IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray(i)
        System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
    End While

Kan du komme med en forklaring på dette ?

/Websam
Avatar billede websam Nybegynder
23. maj 2006 - 11:02 #6
En anden ting er at jeg ikke helt kan se hvad forskellen skulle være i at jeg laver arraylisten i en seperat fil fremfor i codebehind.

For når jeg laver arraylisten i codebehind filen virker det ganske fint med paging, sortering, orderby ect. så hvad skulle forskellen være ?

/Websam
Avatar billede websam Nybegynder
23. maj 2006 - 11:08 #7
Tager jeg blot min IDList og udskriver den så får jeg "System.Collection.ArrayList" jeg ved ikke om det har noget at sige men det indikere da at jeg har en arrayliste.

/Websam
Avatar billede dr_chaos Nybegynder
24. maj 2006 - 07:59 #8
Count skulle være length
du kan måske prøve med
string[] arr = new string[IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)).ToArray().Length];
int i = 0;
foreach(object o in IDList.GetRange(StartOfPage, (EndOfPage - StartOfPage + 1)))
{
arr[i] = o.ToString();
i=i+1;
}
Avatar billede websam Nybegynder
25. maj 2006 - 09:49 #9
Det fik jeg heller ikke til at virke så jeg gav op, istedet fandt jeg frem til at der var en indbygget klasse i frameworket til det samme, nemlig "PagedDataSource".

Den klare det hele ganske fint. Du skal selvfølgelig have nogle point for din indsats så smid et svar ;o)

/Websam
Avatar billede dr_chaos Nybegynder
26. maj 2006 - 10:05 #10
tak :)

Kender ikke pageddatasource :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester