Új hozzászólás Aktív témák

  • Boolash

    aktív tag

    Sziasztok,
    Elakadtam egy problémával, remélem tudtok tippet adni.
    VS2010-ben fejlesztek VisualWebPartot. Adatbázisba töltöttem fel fájlokat (binárisan tárolom) illetve a hozzá tartozó adatokat, és most ezeket szeretném kiolvasni, letölteni.
    Indítottam egy Linq to Sql lekérdezést, mellyel megtaláltam a számomra érdekes elemeket. Ezeket egy Listába tárolom. Az egész lekérdezést a Page_Load -ban végzem, hogy az oldal betöltésekor már meglegyen ez a listám. Viszont nem szeretném, hogy ezt a lekérdezést többször is el kelljen végeznem, ezért Postback esetben nem végzem el ( if (!Page.IsPostBack))

    A Listát egy SPGridView-ban jelenítem meg. Az spgridview-ban lényegében a dokumentum neve és az ID-ja jelenik meg (egyedileg azonosítja).
    A dokumentum nevét LinkButton-ban jelenítem meg. OnCommand() eseményre egy függvényt hív, melyben végzem el a letöltést, CommandArgument-ben elküldöm az adott ID-t.
    <asp:TemplateField HeaderText="Név">
    <ItemTemplate>
    <asp:LinkButton
    ID="LnkDownload"
    runat="server"
    Text='<%# Eval("Name")%>'
    OnCommand="download"
    CommandArgument='<%# Eval("ID")%>'>
    </asp:LinkButton>
    </ItemTemplate>
    <EditItemTemplate>

    A download metódus a cs-ben:
    protected void download(Object sender, CommandEventArgs e)
    {

    using (DataClasses1DataContext dc = new DataClasses1DataContext("Data Source=..."))
    {
    int a;
    bool b = int.TryParse(e.CommandArgument.ToString(), out a);
    Document d = doksik.Single(p => p.ID == a);

    Label1.Text = d.Name;
    Response.Clear();
    Byte[] bytes = (Byte[])d.BinaryData.ToArray();
    Response.Buffer = true;
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = d.MimeType.ToString();
    Response.AddHeader("content-disposition", "attachment;filename="
    + d.Name.ToString());
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();

    }

    }

    Az SPGridview szépen megjelenik, benne a linkbutton is. Rákattintok, és le is tudom tölteni. Viszont a következő kattintás már nem lehetséges (se linkbuttonra se sima buttonra...). Olyan mintha a postback nem futna le...
    Nem vagyok tökéletesen tisztában a működéssel, de szerintem van valahol egy ajax-os scriptmanager, mert ha próbálok egyet hozzáadni, akkor nem engedni, azt írja, hogy már van. Próbálkoztam updatepanelbe rakni, majd triggert állítani rá, de nem működött (ugyanaz).
    Próbálkoztam response.redirect-el, de ez nem lenne jó, mert ilyenkor a linq lekérdezés is ismét lefutna...
    Próbáltam postback hívással javascriptből, de nem történt változás..
    Mi lehet a gond?
    Köszönöm

Új hozzászólás Aktív témák