0

我是这个编程领域(ASP.NET VB)的新手,我想知道是否有人对我有帮助,这样我就可以让事情顺利进行,我将不胜感激!我目前正在使用代码在没有“选择”按钮(下图)的 Gridview 中选择整行(PatientName & Room)。然后我想将这些从行传递到下一页。接收页面将有两个标签。这就是我迷路的地方。

我知道那里有例子,但我找不到适合我的例子,除非有人能指出我正确的方向。谢谢

    Private Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
    'Allows you to "select"/Highlight a row without a select button

    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onmouseover") = "this.style.cursor='pointer';this.style.backgroundColor = '#87CEFF';"
        e.Row.Attributes("onmouseout") = "this.style.textDecoration='none';this.style.backgroundColor = '#FFFFFF';"
        e.Row.ToolTip = "Click to select row"
        e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.GridView1, "Select$" & e.Row.RowIndex)
    End If

End Sub
4

2 回答 2

0

您可以通过多种方式完成此操作。这只是获得所需内容的一种方式。假设您有以下数据结构。

Public Class Patient
    Private patient_Id As Integer
    Public ReadOnly Property PatientID As Integer
        Get
            Return patient_Id
        End Get
    End Property
    Public Property PatientName As String
    Public Property Room As Integer
    Public Sub New(_patientId As Integer, ByVal _PatientName As String, ByVal _Room As Integer)
        patient_Id = _patientId
        PatientName = _PatientName
        Room = _Room
    End Sub
End Class

我们需要 aPatientID来轻松地从列表、数组等中找到患者。在您的中,GridView您可以添加HiddenField带有患者 ID 的 a,如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Patient Name">
            <ItemTemplate>
                <asp:HiddenField runat="server" ID="hiddenPatientID" Value='<%# Eval("PatientID")%>' />
                <asp:Label ID="lblPatientName" runat="server" Text='<%# Eval("PatientName")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Room">
            <ItemTemplate>
                <asp:Label ID="lblPatientRoom" runat="server" Text='<%# Eval("Room")%>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

这将使您的患者 ID 可供您使用。您还可以从您的患者 (PatientName, PatientRoom) 访问其他信息,我在PatientID此示例中使用该信息。从后面的代码访问这些数据的方式是实现控件的RowDataBound事件GridView,如下所示:

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim selectedPatient As Integer = -16

        selectedPatient = DirectCast(e.Row.Cells(0).FindControl("hiddenPatientID"), HiddenField).Value

        If selectedPatient > 0 Then
            e.Row.Attributes("onclick") = Response.Redirect("~/MyOtherPage.aspx?&PatientID=" & selectedPatient)
        End If
    End If
End Sub

很简单,通过使用 row 的FindControl功能,您可以访问HiddenField的数据,在这种情况下是您的患者的 id。您可以在下一页中使用此 ID 找到患者(getPatientById 方法?),或者您可以直接使用患者的数据。

于 2013-09-23T19:48:17.040 回答
0

我强烈建议包括一个选择按钮。它触发的 Select Event 将为您提供查找要在下一页上显示的数据所需的所有信息。

至于数据的传递,QueryString是最好的。 Session如果您不想在 URL 中提供它(并且不想加密或以其他方式混淆它),那将是我的第二选择。

于 2013-09-23T19:21:11.147 回答