У меня есть источник данных ListView в базе данных, отображающий список файлов для загрузки вместе с количеством загрузок для каждого. В ItemTemplate я использую метку для отображения текущего количества и LinkButton с его текстом, установленным на имя файла, и его командой, установленной на «выбрать», чтобы запустить событие Listviews SelectedIndexChanging. Все это работает нормально, и я могу вызвать диалоговое окно загрузки, но не могу обновить метку (которая указывает на новое количество загрузок). Я подозреваю, что, поскольку я использую Response для загрузки двоичных данных, он теряет всю информацию для обновления метки... Одна из моих мыслей - сохранить поток ответов перед загрузкой файла, затем восстановить его в исходное состояние и попробовать чтобы обновить метку ItemTemplates.
protected void FileListView_SelectedIndexChanging( Object sender, ListViewSelectEventArgs e )
{
ListViewItem item = (ListViewItem)PresetUploadListView.Items[e.NewSelectedIndex];
LinkButton lb = (LinkButton)item.FindControl( "PresetUploadTitle" );
int fileID = Convert.ToInt32( lb.CommandArgument.ToString( ), 10 );
byte[] fileData = GetFileDataFromDatabasePreset(fileID);
try
{
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=" + lb.Text + ".zip");
BinaryWriter bw = new BinaryWriter(Response.OutputStream);
bw.Write(fileData);
bw.Close();
Response.ContentType = "application/zip";
Response.Flush();
//Response.Close();
//Response.End();
}
catch (Exception ex)
{
String s = ex.Message + " " + ex.InnerException;
}
Label l = (Label)item.FindControl("PresetUploadDownloads");
int downloadCount = IncandreturnDownloadCount(fileID);
l.Text = downloadCount.ToString(); //+> not getting updated...
e.Cancel = true;
}