Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > ASP.NET 1.x och 2.x > Språk - C#

Lägga in två variabler i en return

Tjenare!
Nu är jag här och tjatar igen. jag vill skicka iväg två variabler i en return, men märkte fort att det inte gick.
Ska jag göra en separat funktion som man laddar in, eller ska jag försöka göra en array?
Min kod:
http://aspkoll.se/code/Index.asp?id=540

/J.

 

Alla har sina brister.
Redigerades av voigtan den 21 juli 2009. Läs tidigare inlägg.
ID: #16839 | Skapades: 2009-07-21 11:38:40 | Tråden har 15 svar och har lästs 366 gånger.

voigtan
voigtan

Gradering

#16840

Jag hade retunerat en arrayList av strängar, eller en eget objekt med Thumbnail nanet och en med Orginal namnet (hellre andra altenativet i mitt tycke)

Flyttat tråden från ASP forumet ;) eftersom det ser ut som .NET kod i alla fall

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 21 juli 2009. Läs tidigare inlägg.
ID: #16840 | Skapades: 2009-07-21 11:40:24

Okej, jag testade detta;
        var allFiles = new ArrayList {fileNames, fileNames2};

        return (string[]) allFiles.ToArray(typeof (string));

Det fungerade inte riktigt, vad kan vara fel?

Alla har sina brister.
ID: #16843 | Skapades: 2009-07-21 11:49:24

voigtan
voigtan

Gradering

#16845

Ett exempel på en arraylist med en egen klass:

private ArrayList ImageList()
{
    ArrayList returnList = new ArrayList();
    for(int i = 0;i<10;i++)
    {
        returnList.Add(new imageData("org_" + i, "thumb_" + i));
    }
    return returnList;
}
class imageData
{
    private string originalFileName, thumbnailFileName;

    public imageData(string OriginalFileName, string ThumbnailFileName)
    {
        originalFileName = OriginalFileName;
        thumbnailFileName = ThumbnailFileName;
    }

    public string OriginalFileName
    {
        set { originalFileName = value; }
        get { return originalFileName; }
    }
    public string ThumbnailFileName
    {
        set { thumbnailFileName = value; }
        get { return thumbnailFileName; }
    }
}

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16845 | Skapades: 2009-07-21 12:07:53

ImageData?  Vad är det för något, försökte använda det, men visual studio accepterade inte det.
Hur använder jag mig av det, koll lite fort på msdn, men fick inget bra svar.

Alla har sina brister.
ID: #16850 | Skapades: 2009-07-21 12:53:38

voigtan
voigtan

Gradering

#16851

Läs koden, dom kommer aldrig hitta den i MSDN eftersom jag har ju skapat en egen klass:

class imageData
{
    private string originalFileName, thumbnailFileName;

    public imageData(string OriginalFileName, string ThumbnailFileName)
    {
        originalFileName = OriginalFileName;
        thumbnailFileName = ThumbnailFileName;
    }

    public string OriginalFileName
    {
        set { originalFileName = value; }
        get { return originalFileName; }
    }
    public string ThumbnailFileName
    {
        set { thumbnailFileName = value; }
        get { return thumbnailFileName; }
    }
}

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16851 | Skapades: 2009-07-21 12:59:22

Hah! Quite obvious. ;)

Alla har sina brister.
ID: #16852 | Skapades: 2009-07-21 13:01:17

stötte på ett annat problem nu.
    protected string[] GetUploadList()
    {
        string folderThumbs = Server.MapPath("App_Data/uploads/thumbs/");
        string folderOrig = Server.MapPath("App_Data/uploads/original/");
        string[] files = Directory.GetFiles(folderThumbs);
        string[] files2 = Directory.GetFiles(folderOrig);
        string[] fileNames = new string[files.Length];
        string[] fileNames2 = new string[files2.Length];

        Array.Sort(files);
        Array.Sort(files2);

        for (int i = 0; i < files.Length; i++)
        {
            fileNames[i] = Path.GetFileName(files[i]);
        }
        for (int i = 0; i < files2.Length; i++)
        {
            fileNames2[i] = Path.GetFileName(files2[i]);
        }

        return fileNames;
       
    }

jag vill att fileName ska ge ut de olika sökvägarna, men ska skicka dem till en hyperlink som ser såhär:
                    <asp:HyperLink
                    ID="FileLink"
                    NavigateUrl='<%# "App_Data/uploads/original/" + Container.DataItem.ToString() %>'
                    Text='<%# Container.DataItem.ToString() %>'
                    runat="server" />

Eftersom att min return inte skickar ut sökvägarna samtidigt kan den inte lista båda mapparnas innehåll.
Det som gör mig galen är att om jag sätter ihop fileName och filName2 i en string[] skickas det exakt samtidigt så inte hyperlinken skilja ut vad den ska visa.
Hade en idé om att man kunde samlat ihop de båda variablerna genom att ta bort fileName och fileName2 och ersätta det med:

        string[] files = Directory.GetFiles(folderThumbs);
        string[] files2 = Directory.GetFiles(folderOrig);

        string[] fileNames = new string[files.Length+files2.Length];

Men det failade. Någon som har en bra idé?
/J.

Alla har sina brister.
ID: #16861 | Skapades: 2009-07-21 17:00:59

Dog tråden nu? =/

Alla har sina brister.
ID: #16868 | Skapades: 2009-07-22 11:01:03

voigtan
voigtan

Gradering

#16869

Du retunera ju bara en String object.

Sen retunera du filnamnet, hade det inte varit bättre att retunera mappath + filen så är det ju bara att köra

Heter filerna detsamma? är det bara mappen som är "problemet"? då hade du ju bara kunnat retunera filnamnet och kör:

<%# "App_Data/uploads/original/" + Container.DataItem.ToString() %>

och

<%# "App_Data/uploads/thumb/" + Container.DataItem.ToString() %>

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16869 | Skapades: 2009-07-22 11:05:57

jo, som det är i den koden ovan är det bara en variabel jag skickar, men det jag egentligen är ute efter är:
        string[] files = Directory.GetFiles(folderThumbs);
        string[] files2 = Directory.GetFiles(folderOrig);

        string[] fileNames = new string[files.Length+files2.Length];

        return filenames();

Eller något i den stilen i vart fall.
Men går det att köra <%# "App_Data/uploads/original/" + Container.DataItem.ToString() %> två olika sådana i en hyperlink? Det borde bli samma felmeddelande, eller har jag missupfattat dig helt nu?
/J.

Alla har sina brister.
ID: #16870 | Skapades: 2009-07-22 12:15:58

voigtan
voigtan

Gradering

#16871

string[] fileNames = new string[files.Length+files2.Length];
Gör ju inget med innehållet, den skapar väl ändå bara upp en sträng(array) med den läng dom files+files2 bli. Ser inte alls varför du behöver krångla till det som du gör just nu.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16871 | Skapades: 2009-07-22 13:05:18

Hah, det märks att jag är nybörjare med andra ord. ;)
Det stora problemet är väl egentligen att jag inte kan skicka två strängar med en return till min hyperlink, gör det göra någon form av loop som skickar över sökvägarna en och en ?

Alla har sina brister.
ID: #16872 | Skapades: 2009-07-22 13:17:50

voigtan
voigtan

Gradering

#16874

Om du skall retunera två strängar så kan du inte retunera det på det sätt du gör nu, du retunera alla bilder du ladda upp, och lägger in varje bild i en array, du måste ha ett objekt som du kan ha mer än ett värde i en array.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16874 | Skapades: 2009-07-22 13:25:52

Okej då. Men jag löste det genom att strunta i de två mapparna, merge:a dom till en mapp istället och lägga till "_th" på alla thumbnails som laddas upp.
Orkar inte krångla när jag inte förstår det riktigt ännu, det åker in och ut lika bort igen.

Jag vill ännu en gång tacka så mycket för all hjälp, och för din tid!
/J.

Alla har sina brister.
ID: #16876 | Skapades: 2009-07-22 13:35:23

voigtan
voigtan

Gradering

#16879

/// <summary>
/// Create a list with all the images
/// </summary>
/// <returns></returns>
private ArrayList ImageList()
{
    string folderThumbs = Server.MapPath("App_Data/uploads/thumbs/");
    string[] ThumbFiles = Directory.GetFiles(folderThumbs);
    string folderOrig = Server.MapPath("App_Data/uploads/original/");
    string[] OriginalFiles = Directory.GetFiles(folderOrig);
    ArrayList returnList = new ArrayList();
    for(int i = 0;i<ThumbFiles.length;i++)
    {
        returnList.Add(new imageData(OriginalFiles[i], ThumbFiles[i]));
    }
    return returnList;
}


Med samma klass som jag postade innan

Och i onload:
ArrayList b = ImageList();
images.DataSource = b;
images.ItemDataBound += images_DataBinding;
images.DataBind();


Och en ny event:
void images_DataBinding(object sender, RepeaterItemEventArgs e)
{
    Image image = e.Item.FindControl("image") as Image;
    HtmlAnchor link = e.Item.FindControl("link") as HtmlAnchor;
    imageData data = e.Item.DataItem as imageData;
    if (data != null && link != null && image !=null)
    {
        image.ImageUrl = "App_Data/uploads/thumbs/" + data.ThumbnailFileName;
        link.HRef = "App_Data/uploads/thumbs/" +  data.OriginalFileName;
    }
}
Så kommer den rendera ut alla thumbs och länkar till orginal bilden.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #16879 | Skapades: 2009-07-22 14:11:10
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy