2009-07-15 3 views
2

На моей веб-странице я использовал gridview. В этом gridview отображается группа пользователей. Я только что добавил одну кнопку из меню умных тегов. И мое требование состоит в том, что когда я нажимаю кнопку, соответствующую каждому пользователю, она перенаправляется на другую страницу и отображает соответствующую информацию пользователя. Что я делаю для получения этого типа вывода?gridview editing

ответ

3

U необходимо добавить кнопку и добавить атрибут CommandName:

<asp:Button ID="EditBtn" runat="server" CommandName="Edit" /> 

то в случае ItemCommand сетки выполните следующие действия

protected void GridView1_ItemCommand(object source, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Edit") 
     { 
      //Redirect to user page information 
      Response.Redirect(PageURL); 
     } 
    } 
1

Вместо кнопки, сделайте одно из столбец гиперссылки. При нажатии на элемент перенаправляется на новую страницу (используя Javascript). При этом вы можете избежать дополнительной колонки для кнопки и обратной передачи.

Для этого необходимо использовать DataTextFormatString.

Образец

 <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"> 
     <Columns> 
      <asp:BoundField DataField="no" HeaderText="SNo" /> 
      <asp:BoundField DataField="file" DataFormatString="&lt;a href=javascript:ShowAssetDetail('{0}');&gt;{0}&lt;/a&gt;" 
       HeaderText="Asset Desc" HtmlEncodeFormatString="False" /> 
     </Columns> 
    </asp:GridView> 

В приведенном выше примере функция ShowAssetDetail JS() должны принимать значение, чтобы перейти на страницу перенаправления. Излишне говорить, что функция JS должна быть написана дополнительно.

+1

Добавление гиперссылки хорошая идея, но вы собираетесь об этом в очень обратном пути, вы должны использовать HyperLinkField, чтобы настроить колонки – Austin

+0

Две проблемы 1. Для того, чтобы использовать HyperLinkField, я думаю, мы должны использовать шаблоны. 2. Я предпочитаю гиперссылку HTML, чтобы избежать кода позади и в оба конца. В любом случае, спасибо вам за ответ – Kaz

3

Ответ Ahmy - это путь, если вы хотите использовать кнопку и перенаправить страницу на другую страницу с информацией пользователя. Однако одна вещь, которая была упущена, заключалась в том, что вы можете передать командный аргумент с помощью кнопки (например, уникальный идентификатор пользователя), который затем можно было бы ввести в очередь запроса страницы, на которую вы перенаправляете, чтобы определить, какой именно пользователь. Это будет выглядеть следующим образом:

<asp:TemplateField HeaderText="Edit User"> 
    <ItemTemplate> 
     <asp:Button ID="EditBtn" Text="Edit User" CommandName="Edit" 
      CommandArgument='<%# Eval("UserID") %>' runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 

Затем в коде позади

protected void GridView1_ItemCommand(object source, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Edit") 
    { 
     //Redirect to user page information 
     Response.Redirect("UserProfilePage.aspx?userID=" + e.CommandArgument); 
    } 
} 

другой альтернативы с помощью кнопки, который я считаю лучшим вариантом является использование HyperLinkField. При использовании кнопки страница должна будет вернуться на сервер, а затем отправить перенаправление в браузер пользователя. С гиперссылкой пользователь переходит прямо к правильной странице. Он сохраняет шаг и не полагается на javascript.

<asp:HyperLinkField DataTextField="UserName" DataNavigateUrlFields="UserID" 
    DataNavigateUrlFormatString="UserProfilePage.aspx?userID={0}" 
    HeaderText="Edit User" />