vb.net <asp:gridview 行打开新页面

vb.net <asp:gridview row open new page

首先,我是asp.net的新手,其次,对不起我的英语,

我用 vb.net 编写了这段 .asp 代码,我设法显示了 gridview 的数据。我还添加了下面的代码行,使整行都可以点击。

Private Sub AutoPopulateGridView_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles AutoPopulateGridView.RowCreated
    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.color='#47B6D2';"
        e.Row.Attributes("onmouseout") = "this.style.textDecoration='none';this.style.color='black';"
        e.Row.ToolTip = "Click to view details"         
    End If
End Sub

我想要做的是,当用户单击每一行时,我将打开一个新页面,其中加载了用户单击的那一行传递的新数据。我被困在这里了。

您可以使用 ASPx 页面上的 GridView 模板完成您想做的所有事情。

不是让 GridView 自己定义列,而是使用模板定义它们,您可以在模板中添加控件到网格视图中。 当您将数据绑定到网格视图时,每列中的控件会自动绑定到您的数据集。下面,您可以看到有一个超链接列使用数据 Table 列 my_value_database_column 此值通过 GET 或查询字符串传递到新页面。 (以这种方式传递值是 HTTP GET)。

<asp:GridView ID="AutoPopulateGridView" runat="server" AutoGenerateColumns="False">
    <Columns>
          <asp:TemplateField HeaderText="My Linked Column">
              <ItemTemplate>
                  <asp:HyperLink ID="HyperLink1" runat="server" href='MyNextPage.aspx?valueToPass=<%#Eval("my_value_database_column").ToString()%>'><%# Eval("column_name_with_text").ToString()%></asp:HyperLink>
              </ItemTemplate>
          </asp:TemplateField>

          <asp:TemplateField HeaderText="boring column" ItemStyle-CssClass="myHoverClass">
              <ItemTemplate>
                  <%# Eval("other_datatable_column_name").ToString()%>
              </ItemTemplate>
          </asp:TemplateField>

     </Columns>
</asp:GridView>

要获取下一页传递的值,请在代码隐藏(.cs 文件)中从查询字符串中检索值:

public partial class MyNextPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //first page hit
        if (!IsPostBack)
        {
            Response.Write("THE VALUE PASSED WAS '" + Request.QueryString["valueToPass"] + "'");
        }

    }
}

此外,也可以使用 css 和 psudo-class :hover

将样式直接添加到 ASPx 页面中的 gridview 模板
<style type="text/css">
        .myHoverClass {
            text-decoration:none;
            color:black;
        }

        .myHoverClass:hover {
            cursor: pointer;
            color: #47B6D2;
        }
    </style>

此解决方案与您的略有不同。但你可以从这里得到灵感

此处数据列表以table格式显示,editable link也添加在这里,以便您了解如何传递数据(实际上是项目ID)使用 html.

中的标签

这是代码......

<body>
    <%
    dim query
    Dim objConn, objRS, sqlString
    set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("hospital.mdb")    
    set objRS = Server.CreateObject("ADODB.Recordset")
    sqlString ="select * from Test"
    objRS.Open sqlString, objConn
   
%>
            <table class="table table-border table-hover table-striped">
                <thead class="thead-dark">
                    <th>Test Name</th>
                    <th>Test Type</th>
                    <th>Unit Price</th>
                    <th>Date</th>
                    <th></th>
                </thead>
                <% Do Until objRs.EOF = True%>

                <tr id="<%=objRS("iD")%>">
                    <td>
                        <%Response.Write(objRS("TestName"))%>
                    </td>
                    <td>
                        <%Response.Write(objRS("Type"))%>
                    </td>
                    <td>
                        <%Response.Write(objRS("UnitPrice"))%>
                    </td>
                    <td>
                        <%Response.Write(objRS("AddingDate"))%>
                    </td>

                    <td> <a href='editTest.asp?Id=<%=objRS("Id")%>'>Edit</a></td>
                </tr>
                <%
       objRS.MoveNext
                loop
                objRS.Close
                 objConn.Close
   
   %>
            </table>
</body>