2016-07-22 3 views
3

私は割り当ての一部として注文ウェブサイトを作成しています。医者がログインして、患者さんが発注したすべての注文を見る。医師がいくつかのチェックボックスをクリックしてボタンをクリックすると、チェックされたボックスが注文(行)列(承認)を承認済みに更新します。チェックボックスをオンにすると、承認列が更新され、不承認となります。これはすべて動作し、更新されます...グリッドビューでデータ/フィルタをフィルタリングする方法

この後、グリッドは消えません。医師は注文を更新して変更することができますが、チェックされていないかチェックされていません。 - 私はどのように私のVBコードにこれを適用するか分からない。

私はデータベースの注文表から削除することを望みません - 新しい注文を医師に提示してください。彼はまだチェックしていません。

私gird:

<asp:GridView ID="GridViewdoc" runat="server" AutoGenerateColumns="False" DataKeyNames="OrderId"> 
    <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 HeaderText="Approve Status"> 
    <ItemTemplate> 
    <asp:CheckBox ID="ApproveBox" runat="server" /> 
    </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

gidの背後に私のコード:

Imports System.Data.SqlClient 

輸入System.Data

部分クラスPages_docorders 継承System.Web.UI.Page

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() 

    End If 

End Sub 

Protected Sub GridViewdoc_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridViewdoc.RowDataBound 


    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim drview As DataRowView = TryCast(e.Row.DataItem, DataRowView) 

     'Find checkbox and checked/Unchecked based on values 
     Dim chkb As CheckBox = DirectCast(e.Row.FindControl("ApproveBox"), CheckBox) 
     If drview(8).ToString() = "Approve" Then 
      chkb.Checked = True 
     Else 
     End If 
    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") 
    Dim val As String 
    val = "" 
    Dim Oid As Integer 
    Dim conn As New System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\surgerydb.mdf;Integrated Security=True;Connect Timeout=30") 

    For Each row As GridViewRow In GridViewdoc.Rows 
     Dim therowindex As Integer = row.RowIndex 
     Oid = Integer.Parse(GridViewdoc.DataKeys(therowindex).Value.ToString()) 
     val = "" 
     Dim cb As CheckBox = row.FindControl("ApproveBox") 
     If cb.Checked Then 

      val = "Approved" 
     Else 

      val = "Disapproved" 
     End If 
     If Oid > 0 Then 
      Dim cmdstring As String = " UPDATE Order_pres SET Approved = @appr Where OrderID= @oid" 
      conn.Close() 
      conn.Open() 
      Dim cmd = New SqlCommand(cmdstring, conn) 
      cmd.Parameters.Add("@appr", Data.SqlDbType.NVarChar).Value = val 
      cmd.Parameters.Add("@oid", Data.SqlDbType.NVarChar).Value = Oid 
      Dim result As Integer 
      result = cmd.ExecuteNonQuery() 

     End If 
    Next 

    Dim cmd3string As String = " Select * From docgridview WHERE DoctorId = " & Session("DoctorId") 
    Dim dtm As New System.Data.DataTable() 
    Dim da As New System.Data.SqlClient.SqlDataAdapter(cmd3string, conn) 
    conn.Close() 
    conn.Open() 
    da.Fill(dtm) 
    conn.Close() 
    GridViewdoc.DataSource = dtm 
    GridViewdoc.DataBind() 
End Sub 

のエンドクラス

うまくいけば、誰かが助けることができる - あなたに感謝:)

+0

タイトルには、GridViewを非表示にしたいという内容があります。あれは正しいですか? – ConnorsFan

+0

こんにちは@ConnorsFan!はい、確かにこれは私がやろうとしていることです – laurajs

+0

@ConorsFan - 私はタイトルを編集しました。あなたはこれがどうやってできるか知っていますか? – laurajs

答えて

1

Approvedフィールドがある限り何の決定は、オーダーの承認について行われていないとして、あなたはこれを試みることができるOrder_presNULLの場合:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     BindGridViewData() 
    End If 
End Sub 

Protected Sub btnapprove_Click(sender As Object, e As System.EventArgs) Handles btnapprove.Click 
    ... 
    For Each row As GridViewRow In GridViewdoc.Rows 
     ... 
    Next 
    BindGridViewData() 
End Sub 

Protected Sub BindGridViewData() 
    Using conn As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\surgerydb.mdf;Integrated Security=True;Connect Timeout=30") 
     Using cmd As New SqlCommand("SELECT DGV.* FROM docgridview DGV INNER JOIN Order_pres OP ON OP.OrderID = DGV.OrderID WHERE DGV.DoctorId = @DoctorId AND OP.Approved IS NULL", conn) 
      cmd.CommandType = CommandType.Text 
      cmd.Parameters.Add(New SqlParameter("@DoctorId", Session("DoctorId"))) 
      Dim dataAdapter As New SqlDataAdapter(cmd) 
      Dim dtm As New DataTable() 
      dataAdapter.Fill(dtm) 
      GridViewdoc.DataSource = dtm.DefaultView 
      GridViewdoc.DataBind() 
     End Using 
    End Using 
End Sub 

Order_presの対応するレコードがまだ承認または不承認されていないレコードをdocgridviewに探します。

N.B.上記のコードでは、VBコードファイルの先頭に次の行があることを前提としています。

Imports System.Data 
Imports System.Data.SqlClient 
+0

こんにちは@Connorsファン!あなたの答えをありがとう - 私はすべてのコードのファイルに私の質問のコードを更新しました、あなたは私がその部分をしてください表示することができます:) – laurajs

+0

私のコードは、 'btnapprove.Click'(' Dim cmd3string As String ... 'からメソッドの最後まで)を指定します。 – ConnorsFan

+0

これは動作します - ボタンをクリックするとグリッドが消えますが、ページを再読み込みするときに再び表示されます/新しいログインのような注文が表示されますが、まだ注文表に残っています – laurajs

関連する問題