在我的网页中,我使用了gridview。在此gridview中,它显示了一组用户信息。 我刚从智能标签菜单中添加了一个按钮。我的要求是,当我按下与每个用户相对应的按钮时,它将重定向到另一个页面并显示相应用户的信息。我做了什么来获得这种类型的输出?
答案 0 :(得分:3)
你必须添加按钮并添加属性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 :(得分:3)
如果您想使用按钮并将页面重定向到包含用户信息的其他页面,那么Ahmy的答案是可行的方法。然而,遗漏的一件事是您可以通过按钮传递命令参数(如用户的唯一ID),然后您可以将其放入要重定向到的页面的查询字符串中,以识别它是哪个用户。这看起来像这样:
<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" />
答案 2 :(得分:1)
取代按钮,使其中一列超链接。单击该项目后,重定向到新页面(使用Javascript)。这样你就可以避免按钮的额外列和回发。
您必须使用DataTextFormatString。
样品
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="no" HeaderText="SNo" />
<asp:BoundField DataField="file" DataFormatString="<a href=javascript:ShowAssetDetail('{0}');>{0}</a>"
HeaderText="Asset Desc" HtmlEncodeFormatString="False" />
</Columns>
</asp:GridView>
在上面的示例中,JS函数ShowAssetDetail()必须将值传递给重定向页面。不用说,JS函数必须另外编写。