管理者が注文を承認できるようにチェックボックスが付いたグリッドビューがあります。彼は注文のリストと彼がチェックしたものを与えられ、ボタンをクリックすると未チェックのままになり、データベースの承認フィールドが更新されます。グリッド上の行の値をCheckBoxおよびボタンで更新する
確認 -
未確認の承認- - に承認されたフィールドの値に更新承認フィールドに更新値をへ - 不承認
私はいくつかの困難を経験していますしかし:
をチェックボックス付きのグリッドがあります。
<asp:GridView ID="GridViewdoc" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="OrderID" HeaderText="Order Id" />
<asp:BoundField DataField="DoctorId" HeaderText="Doctor Id" />
<asp:BoundField DataField="Forename" HeaderText="Forename" />
<asp:BoundField DataField="Surname" HeaderText="Surname" />
<asp:BoundField DataField="MedicineId" HeaderText="Medicine Id" />
<asp:BoundField DataField="MedicineName" HeaderText="Medicine Name" />
<asp:BoundField DataField="pharmname" HeaderText="Pharmacy Name" />
<asp:BoundField DataField="Dateordered" HeaderText="Date Ordered" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox Text="Approve" ID="ApproveBox" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
それは私のデータベースでオーダーテーブルから、このselect文成り立つ:
Create View docgridview
As
Select A.OrderID, A.DoctorId, B.Forename, B.Surname, A.MedicineId, C.Name as MedicineName, D.pharmname, A.Dateordered, Approved
From order_pres A
Left Join Patient B on (A.PatientId = B.PatientId)
Left Join Medicine C on (A.MedicineId = C.MedicineId)
Left Join pharmacy D on (A.PharmacyId = D.PharmacyId)
Left Join Doctor E on (A.DoctorId = E.DoctorId)
をのでのようなグリッドビューにバインドします(選択docgridview)
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim conn As New System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\surgerydb.mdf;Integrated Security=True;Connect Timeout=30")
Dim cmd3string As String = " Select * From docgridview WHERE DoctorId = " & Session("DoctorId")
Dim dt As New System.Data.DataTable()
Dim da As New System.Data.SqlClient.SqlDataAdapter(cmd3string, conn)
conn.Open()
da.Fill(dt)
conn.Close()
GridViewdoc.DataSource = dt
GridViewdoc.DataBind()
HttpContext.Current.Session("Approved") = dt
End If
これはチェックボックスとボタンを制御します:
Protected Sub GridViewdoc_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridViewdoc.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
CType(e.Row.FindControl("Approvebox"), CheckBox).Checked = True
End If
End Sub
Protected Sub btnapprove_Click(sender As Object, e As System.EventArgs) Handles btnapprove.Click
Dim dt As Data.DataTable = Session("Approved")
For Each row As GridViewRow In GridViewdoc.Rows
Dim cb As CheckBox = row.FindControl("ApproveBox")
If cb.checked Then
dt.Rows(row.RowIndex).Item(8) = "Approved"
Else
dt.Rows(row.RowIndex).Item(8) = "Disapproved"
End If
Next
GridViewdoc.DataSource = dt
GridViewdoc.DataBind()
End Sub
私はエラー expereincingています:button.clickで確認されているチェックボックスのための
- の値に変更する必要があり、注文表に「承認済み」のカラムを承認済み
ボタンをクリックしてチェックを外したチェックボックスの場合 - 注文表の[承認済み]列は値に変更する必要がありますは不承認です。
この
が更新されます注文表である(ビットとして設定されて承認され、私はこれが正しいかどうかを確認していない):
ここではこれをcb.checkedに設定しますか?私がフィールドの異なるタイプを通過するときには、cb.checkedはありません – laurajs
@laurajs、編集を参照してください。 – Crowcoder
ですが、チェックしないと承認された場合は値が更新され、チェックされていないと不承認となります。これはこれらの値を取り除きます。 – laurajs