Sheila Pontes
Привет,
Я проверил ваш код, и он показывает мне некоторые ошибки.
Ошибка 1: Два компонента с одинаковыми именами, updatepanel и pane component.
Ошибка 2: Триггеры показывают ошибку (Элемент управления с идентификатором 'LinkButton1' не был найден для триггера в UpdatePanel 'UpdatePanel1').
РЕШЕНИЕ
Чтобы исправить ошибку 1.
Переименуйте один из них.
Чтобы исправить ошибку 2.
Удалите компонент триггера в вашем aspx и событие onclick кнопки linkbutton.
Добавьте событие ItemCreated в 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">
В коде позади добавьте событие в каждую строку, созданную в вашем Даталисте.
С#if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//Assigns the event to each radiobutton item
((LinkButton)e.Item.FindControl("LinkButton1")).Click += new System.EventHandler(DownloadFile);
}
VB.NETIf (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
'Assigns the event to each radiobutton item
Dim link As LinkButton = e.Item.FindControl("LinkButton1")
AddHandler link.Click, AddressOf DownloadFile
End If
Когда вы нажимаете кнопку linkbutton, событие срабатывает.
Вот! полный код
КОД ASPX<!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>
КОД-ЗА C#protected void DownloadFile(object sender, EventArgs e)
{
//your download code
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)
{
//Assigns the event to each radiobutton item
((LinkButton)e.Item.FindControl("LinkButton1")).Click += new System.EventHandler(DownloadFile);
}
}
КОД-ПОЗАДИ VB.NETImports 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" 'path the destiny file
Dim client As New WebClient()
'localhost:50751. My local host. The image is in root the application
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
'Assigns the event to each radiobutton item
Dim link As LinkButton = e.Item.FindControl("LinkButton1")
AddHandler link.Click, AddressOf DownloadFile
End If
End Sub
End Class
Sheila Pontes
Привет,
Проверьте, работает ли кнопка.
Чтобы помочь вам, я изменю пост выше. Я наберу полный код в vb.
Скопируйте этот код и вставьте его в свой тестовый проект и посмотрите, как он работает.