Hi,
I tested your code and it shows me some errors.
Error 1: Two components with same name, updatepanel and pane component.
Error 2: The triggers show error (
A control with the ID 'LinkButton1' was not found for the trigger in UpdatePanel 'UpdatePanel1').
SOLUTION
To fix error 1.
Rename one of them.
To fix error 2.
Remove the trigger component in your aspx and the onclick event of the linkbutton.
Add the ItemCreated event in the DataList
<asp:DataList ID="DataList2" runat="server" p Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" RepeatLayout="Table" OnItemCreated="DataList2_ItemCreated">
In the code-behind, add the event to each row created in your DataList.
C#
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
((LinkButton)e.Item.FindControl("LinkButton1")).Click += new System.EventHandler(DownloadFile);
}
VB.NET
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim link As LinkButton = e.Item.FindControl("LinkButton1")
AddHandler link.Click, AddressOf DownloadFile
End If
When you click the linkbutton, the event fire.
Here! The Complete code
ASPX CODE
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head><%@ Page Language="vb" AutoEventWireup="false" CodeBehind="frm_my_test1.aspx.vb" Inherits="vb_web_app_teste.frm_my_test1" %>
<body>
<form id="form1" runat="server">
<asp:scriptmanager runat="server"></asp:scriptmanager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel runat="server" ID="Panel1" ChildrenAsTriggers="false">
<div style="vertical-align: middle; min-height: 480px;" class="pre-scrollable">
<div>
<asp:DataList ID="DataList2" runat="server" OnItemCreated="DataList2_ItemCreated" Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False" Font-Underline="False" HorizontalAlign="Center" RepeatLayout="Table">
<ItemTemplate>
<div>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("FileName") %>'></asp:Label>
<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("ImagePath") %>'
CommandArgument='<%# Eval("Id")%>'></asp:LinkButton>
</div>
</ItemTemplate>
</asp:DataList>
</div>
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
CODE-BEHIND C#
protected void DownloadFile(object sender, EventArgs e)
{
string localFilenameDestiny = @"D:\Image\1.jpg";
using (WebClient client = new WebClient())
{
client.DownloadFile("http://your_domain_application/1.jpg", localFilenameDestiny);
}
}
protected void DataList2_ItemCreated(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
((LinkButton)e.Item.FindControl("LinkButton1")).Click += new System.EventHandler(DownloadFile);
}
}
CODE-BEHIND VB.NET
Imports System.Net
Public Class frm_my_test1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim dt As New DataTable()
dt.Columns.Add("Id")
dt.Columns.Add("FileName")
dt.Columns.Add("ImagePath")
Dim dr As DataRow = dt.NewRow()
dr("Id") = "1"
dr("FileName") = "A"
dr("ImagePath") = "Clique"
dt.Rows.Add(dr)
Me.DataList2.DataSource = dt
Me.DataList2.DataBind()
End Sub
Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs)
Dim localFilename As String = "F:\1.png"
Dim client As New WebClient()
client.DownloadFile("http://localhost:50751/imginfo.png", localFilename)
End Sub
Protected Sub DataList2_ItemCreated(ByVal sender As Object, ByVal e As DataListItemEventArgs)
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim link As LinkButton = e.Item.FindControl("LinkButton1")
AddHandler link.Click, AddressOf DownloadFile
End If
End Sub
End Class