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>
首先,我是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>