получение деталей строки gridview по ссылке в строке - PullRequest
2 голосов
/ 18 июля 2011

У меня есть таблица gridview, которая имеет три столбца..FileID, uploadedBy и delete. Только владелец файла может удалить файл. Как я могу проверить, что лицо, удаляющее файл, является владельцем файла. У меня есть учетные данные для входа и у меня есть строка uploadedBy. Я могу получить учетные данные для входа, но не могу получить столбец uploadedBy по ссылке для удаления, по которой щелкнули.

<asp:TemplateField HeaderText="View" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
          <asp:HyperLink ID="lnkView" runat="server" NavigateUrl='<%# Eval("Id", "~/ViewFile.aspx?Id={0}") %>' Text="View"></asp:HyperLink>
        </ItemTemplate>
      </asp:TemplateField>
      <asp:HyperLinkField ItemStyle-HorizontalAlign="Center" DataNavigateUrlFields="Id" DataNavigateUrlFormatString="~/DeleteFile.aspx?Id={0}" HeaderText="Delete" Text="Delete" />

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {        
     switch (e.Row.RowType)
    {
      case DataControlRowType.DataRow:
        FileInfo myFileInfo = (FileInfo)e.Row.DataItem;
        switch (myFileInfo.ContentType.ToLower())
        {
          case "image/pjpeg":         // .jpg files
          case "image/gif":           // .gif files
          case "application/msword":  // .doc files
          case "text/plain":         // .txt files 
          case "application/vnd.ms-excel":  
            // Do nothing. When the row contains a viewable type, 
            // we want the View link to be enabled.
            break;
          default:
            // Find the View link and disable it.
            HyperLink myLink = (HyperLink)e.Row.FindControl("lnkView");
            myLink.Enabled = false;
            break;
        }
        break;
    }
  }

1 Ответ

2 голосов
/ 18 июля 2011

Вы можете использовать событие RowDataBound и установить флажок «Обновлено» для текущего зарегистрированного пользователя. Если это не тот же пользователь, просто спрячьте кнопку удаления.

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        System.Data.DataRow dr = ((System.Data.DataRowView)e.Row.DataItem).Row;

        if (dr["uploadedBy"].ToString() != HttpContext.Current.User.Identity.Name)
        {
            ((Button)e.Row.FindControl("btnDelete")).Visible = false;
        }
     }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...