我正在创建一个药物订购网站,它是一个原型,并使用asp.net和vb保存项目的组成数据。患者,医生和药物已经记录在数据库中。患者登录,看到自己的药物(通过会话 - 这显示在网格上),我添加了一个选择按钮 - 当选择按钮时,我希望药物在订单表上更新(也记录订购的日期)。
有一张病人表和一张药品表 - 患者通过链接表(处方表)将两个复合键与药物联系起来。用户登录后,会重定向到user.aspx页面 -
登录时从数据库中显示已记录用户药物的代码:
Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs)
If Not IsPostBack Then
Dim conn As New System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Laura\Final_proj\App_Data\surgerydb.mdf;Integrated Security=True;Connect Timeout=30")
Dim cmdstring As String = "SELECT md.Name, md.Purpose, md.Instrcutions " +
"FROM Patient pt INNER JOIN prescription pr ON pt.PatientId = pr.PatientId " +
"INNER JOIN medicine md ON md.MedicineId = pr.MedicineId Where pt.PatientId = @PatientId"
Dim dt As New System.Data.DataTable()
Dim da As New System.Data.SqlClient.SqlDataAdapter(cmdstring, conn)
da.SelectCommand.Parameters.Add("@PatientId", System.Data.SqlDbType.Int).Value = CInt(Session("PatientId").ToString())
conn.Open()
da.Fill(dt)
conn.Close()
GridView1.DataSource = dt
GridView1.DataBind()
End If
End Sub
这显示以下内容:
我在aspx中为网格添加了一个新列,以便显示选择按钮 - 这些是我想要与行和选定药物对应的按钮:
<asp:GridView ID="GridView1" runat="server" >
<Columns>
<asp:CommandField ShowSelectButton="True" />
</Columns>
</asp:GridView>
一旦选择了药物中的药物,所选信息应该在此更新(我会在更新后在另一页上显示该表):
如果我需要提供更多信息来帮助解决问题,请询问。三江源
错误经历:
答案 0 :(得分:3)
如果您将字段MedicineId
添加到数据源,则可以在TemplateField中包含LinkButton,并将其CommandArgument
设置为MedicineID
值:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" Text="Select" CommandName="UpdateMedicine" CommandArgument='<%# Eval("MedicineId") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Purpose" HeaderText="Purpose" />
<asp:BoundField DataField="Instrcutions" HeaderText="Instructions" />
</Columns>
</asp:GridView>
然后在代码隐藏中处理RowCommand
事件:
Protected Sub GridView1_RowCommand(sender As Object, e as GridViewCommandEventArgs)
If e.CommandName = "UpdateMedicine" Then
Dim medecineID As Integer = Integer.Parse(e.CommandArgument.ToString())
// Update the data in the database
...
End If
End Sub