Asp.net 如何在gridview行下显示div标记单击

Asp.net 如何在gridview行下显示div标记单击,asp.net,Asp.net,我想在我放在gridview下的div标记中显示所选用户信息,当用户单击该行下面的gridview所选行时,我想显示用户信息。 只需一点jQuery就可以实现这一点。我希望下面的答案对你有所帮助 代码隐藏: protected void Page_Load(object sender, EventArgs e) { var users = new List<object>(); users.Add(new { Name = "Name 1", Surname = "

我想在我放在gridview下的div标记中显示所选用户信息,当用户单击该行下面的gridview所选行时,我想显示用户信息。

只需一点jQuery就可以实现这一点。我希望下面的答案对你有所帮助

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    var users = new List<object>();

    users.Add(new { Name = "Name 1", Surname = "Surname 1" });
    users.Add(new { Name = "Name 2", Surname = "Surname 2" });
    users.Add(new { Name = "Name 3", Surname = "Surname 3" });
    users.Add(new { Name = "Name 4", Surname = "Surname 4" });
    users.Add(new { Name = "Name 5", Surname = "Surname 5" });
    users.Add(new { Name = "Name 6", Surname = "Surname 6" });
    users.Add(new { Name = "Name 7", Surname = "Surname 7" });
    users.Add(new { Name = "Name 8", Surname = "Surname 8" });
    users.Add(new { Name = "Name 9", Surname = "Surname 9" });
    users.Add(new { Name = "Name 10", Surname = "Surname 10" });

    gvUsers.DataSource = users;
    gvUsers.DataBind();
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" Inherits="WebApplication6.Default2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var gridId = "<%= gvUsers.ClientID %>";
            var rowClickEvent = "#" + gridId + " tr"
            var current = "";

            $("#" + gridId).on("click", "span.close", function () {
                //Remove the row when user click on X
                $(this).parent().parent().empty();
            });

            $(rowClickEvent).click(function () {
                //Add row containing aditional info when user click on a row inside the grid view
                var row = this;
                var name = row.children[0].innerHTML;
                var surname = row.children[1].innerHTML;

                if ((name + surname) != current) {
                    $("<tr style='background-color:yellow;'><td style='height:200px;vertical-align:top;'>Dear " + name + " " + surname + "<br />Your Account Was Created Successfully<td><td style='vertical-align:top;'><span class='close'>X</span></td></tr>").insertAfter(row);
                }

                current = name + surname;
            });
        });
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
    <asp:GridView ID="gvUsers" runat="server">
    </asp:GridView>
</asp:Content>
受保护的无效页面加载(对象发送方,事件参数e)
{
var users=新列表();
添加(新的{Name=“Name 1”,姓氏=“姓氏1”});
添加(新的{Name=“Name 2”,姓氏=“姓氏2”});
添加(新的{Name=“Name 3”,姓氏=“姓氏3”});
添加(新的{Name=“Name 4”,姓氏=“姓氏4”});
添加(新的{Name=“Name 5”,姓氏=“姓氏5”});
添加(新的{Name=“Name 6”,姓氏=“姓氏6”});
添加(新的{Name=“Name 7”,姓氏=“姓氏7”});
添加(新的{Name=“Name 8”,姓氏=“姓氏8”});
添加(新的{Name=“Name 9”,姓氏=“姓氏9”});
添加(新的{Name=“Name 10”,姓氏=“姓氏10”});
gvUsers.DataSource=用户;
gvUsers.DataBind();
}
ASPX:

protected void Page_Load(object sender, EventArgs e)
{
    var users = new List<object>();

    users.Add(new { Name = "Name 1", Surname = "Surname 1" });
    users.Add(new { Name = "Name 2", Surname = "Surname 2" });
    users.Add(new { Name = "Name 3", Surname = "Surname 3" });
    users.Add(new { Name = "Name 4", Surname = "Surname 4" });
    users.Add(new { Name = "Name 5", Surname = "Surname 5" });
    users.Add(new { Name = "Name 6", Surname = "Surname 6" });
    users.Add(new { Name = "Name 7", Surname = "Surname 7" });
    users.Add(new { Name = "Name 8", Surname = "Surname 8" });
    users.Add(new { Name = "Name 9", Surname = "Surname 9" });
    users.Add(new { Name = "Name 10", Surname = "Surname 10" });

    gvUsers.DataSource = users;
    gvUsers.DataBind();
}
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" Inherits="WebApplication6.Default2" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var gridId = "<%= gvUsers.ClientID %>";
            var rowClickEvent = "#" + gridId + " tr"
            var current = "";

            $("#" + gridId).on("click", "span.close", function () {
                //Remove the row when user click on X
                $(this).parent().parent().empty();
            });

            $(rowClickEvent).click(function () {
                //Add row containing aditional info when user click on a row inside the grid view
                var row = this;
                var name = row.children[0].innerHTML;
                var surname = row.children[1].innerHTML;

                if ((name + surname) != current) {
                    $("<tr style='background-color:yellow;'><td style='height:200px;vertical-align:top;'>Dear " + name + " " + surname + "<br />Your Account Was Created Successfully<td><td style='vertical-align:top;'><span class='close'>X</span></td></tr>").insertAfter(row);
                }

                current = name + surname;
            });
        });
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
    <asp:GridView ID="gvUsers" runat="server">
    </asp:GridView>
</asp:Content>


编码工作正常,但问题是当我单击其显示div标记下面的行时,如果我再次单击同一行,其显示另一个div标记,我想在第二次单击gridview行时关闭div标记,只需使用javascript稍微调整一下,使其完全按照您想要的方式工作。请查看编辑以防止重复显示。您将看到我创建了一个名为current的变量,您需要将该变量设置为id或其他唯一值(我以姓名组合为例)然后每次我添加一行时,我都会检查这个变量,以确保没有为该行添加其他div。我发现上面的代码存在一些问题。您能建议我如何解决这个问题吗?例如,我单击了名称1,在行div 1下,如果我再次单击名称1,则该行已打开。名称1未打开……这很好……但如果我单击名称2或名称,则问题不会关闭div 13..--第2行或第3行下…打开但未关闭再次打开我返回到名称1如果我再次单击另一个第1行打开bcz我的旧分区1仍然存在我不想在名称1行下打开新分区1