Получение имени столбца формы Gridview - PullRequest
0 голосов
/ 13 октября 2010

У меня есть Gridview, который отображает имена файлов в базе данных.

alt text

Я написал код для удаления записи имени файла из базы данных, но я также хочу удалить ее из каталога, так как мне получить имя файла из Gridview?

Я не хочу выполнять другую команду выбора для получения имени файла.

Код:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
     int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
     sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
     sdsFiles.DeleteParameters.Clear();
     sdsFiles.DeleteParameters.Add("id",Fid.ToString());
     sdsFiles.Delete();
     System.IO.Directory.Delete(Server.MapPath("~/Data/"));
}

Спасибо.

Ответы [ 3 ]

2 голосов
/ 13 октября 2010

По соображениям производительности я бы не стал зацикливаться на добавлении большого количества ключей, но вы можете установить свойство DataKeys в GridView, чтобы оно включало столбец имени файла, а также значение fid, которое вы уже установили, установив свойство GridViews DataKeyNames равным «FID, Filename», затем извлекает DataKey по строке во время вашего метода удаления, используя вместо этого метод GridView1.DataKeys [e.RowIndex] .Values, где извлекает DataKey по индексу, поэтому, если ваши DataKeys имеют значение «FID, filename», FID будет быть GridView1.DataKeys [e.RowIndex] .Values ​​[0] и имя файла будет GridView1.DataKeys [e.RowIndex] .Values ​​[1].

2 голосов
/ 13 октября 2010

Я получаю строку (имя файла) прямо таким образом:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
     GridView1.SelectedIndex = e.RowIndex;         
     string fileName = GridView1.SelectedRow.Cells[1].Text;
     System.IO.File.Delete(Server.MapPath("") + "\\" + fileName);    

     int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
     sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
     sdsFiles.DeleteParameters.Clear();
     sdsFiles.DeleteParameters.Add("id",Fid.ToString());
     sdsFiles.Delete();

     GridView1.SelectedIndex = -1;
}

Может быть, когда-нибудь быстрее, я не уверен.

2 голосов
/ 13 октября 2010

Используйте следующий код и выполните шаги;

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
    sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
    sdsFiles.DeleteParameters.Clear();
    sdsFiles.DeleteParameters.Add("id",Fid.ToString());
    sdsFiles.Delete();
    string fileName = ((Label)GridView1.Rows[e.RowIndex].FindControl("Label1")).Text;
    System.IO.File.Delete(Server.MapPath("") + "\\" + fileName);
}
  1. вы должны перейти к столбцам gridview окна
  2. Преобразовать в столбец имени файла в TemplateField
  3. Окно «Сохранить и закрыть столбцы GridView»
  4. Перейти к шаблону колонки "Файлы"
  5. Установить идентификатор метки "Label1"
  6. Перейти к коду и использовать его

    alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...