Ciao a tutti.
Vorrei fare in modo che in una gridview fosse visualizzato (e funzionante) un ButtonField solo in particolari condizioni, ma no so bene come fare.
Ad esempio, se per quella riga della GridView è presente un file nel database, compaia un bottone per il download.
Avevo provato ad utilizzar il metodo RowDataBound della GridView nel modo seguente, ma anche se la visualizzazione è corretta quando clicco su uno dei qualsiasi bottoni presenti nella riga, mi esegue sempre il download del file csv, ignorando invece le altre azioni da eseguire.
protected void gvResult_RowDataBound(object sender, GridViewRowEventArgs e) {
string comID = (string)DataBinder.Eval(e.Row.DataItem, "comID");
ImageButton imgBt = (ImageButton)e.Row.FindControl("imgDownloadCsv");
if(imgBt != null) {
DbManager db = new DbManager();
string nomeFileCsv = db.RetrieveFileNameClienti(comID);
if (!String.IsNullOrEmpty(nomeFileCsv)) {
imgBt.ImageUrl = "~/images/txt.png";
imgBt.PostBackUrl = "~/handlers/RenderHandlerCsv.ashx?comID=" + comID + "&nomeFile=" + nomeFileCsv;
imgBt.AlternateText = "Download file CSV";
imgBt.ToolTip = "Download file CSV";
imgBt.Visible = true;
}
else {
imgBt.Visible = false;
}
}
}
Questo invece il codice della pagina aspx:
[...]
<asp:ButtonField ButtonType="Image" ImageUrl="~/images/info.png"
Text="Aggiorna stato" CommandName="UpdateCommunicationState">
<ItemStyle Width="24px" />
</asp:ButtonField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDownloadCsv" runat="server" />
</ItemTemplate>
</asp:TemplateField>
Modificato da andri745 il 26 agosto 2010 15.14 -