2016-07-04 13 views
2

私は注文表を保持するGridViewを持っています(これらはinsert文の値です)。医師のページに注文表が表示されますが、承認/非承認が可能なように追加したいと思います(承認されている場合は '承認'列を承認済みに更新します)。このためGridViewCheckBox列を追加する必要があります。これは私の学習(ないライブウェブサイト)の一部である。CheckBoxを取得してGridViewの行をコマンドする

私は未承認/承認する行を設定しますGridViewにチェックボックスの列を追加するにはどうすればよいです?チェックすると

これは私のためのテーブルである - (すべてのデータがダミーデータである)

order table

グリッド:

<asp:GridView ID="GridViewdoc" runat="server" > 
</asp:GridView> 

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 alltheview 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 

グリッド上のデータを表示データを引っ張る私のselect文:注文表は今(これは全てダミーでどのように見えるか

Create View theallview 
As 

Select A.OrderID 
    ,A.PatientId ,B.Forename,B.Surname ,A.MedicineId ,C.Name  as MedicineName ,E.Name as DoctorName, A.PharmacyId ,D.pharmname ,A.DoctorId ,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) 

データは途中まで:

ボタン。クリックしたイベントがチェックされた値を送信します 誰かがこの質問に関する詳細情報を必要とする場合はお知らせください。

+0

あなたのDBフィールドが '' VARCHAR(50)で "承認"。これは、列のソースとして使用するフィールドですか?もしそうなら、それは実際にはビットタイプ – Andrei

+0

であるべきです。こんにちは@Andrei - これは、私がチェックされ、チェックされていないと承認されない場合に承認するために更新したいカラムです – laurajs

+0

それはなぜそれが文字列になりたいのですか?実際には、ビットはここではもっと意味があります(これは基本的にブール値です)。グリッドビューの列はそのまま箱の中で動いていきます。 – Andrei

答えて

0

これを試してください。それはC#ですが、あなたはVB.Netをかなり簡単に動かすことができます。

私は自分のコードを独自の方法でロードするようにします。承認が更新されたら、グリッドビューの再読み込みをお勧めします。

ASPX:背後

<asp:GridView ID="GridViewdoc" DataKeyNames="OrderId" AutoGenerateColumns="false" runat="server"> 
      <Columns> 
       <asp:BoundField HeaderText ="Order Id" DataField="OrderId" /> 
       <asp:BoundField HeaderText ="Patient Id" DataField="PatientId" /> 
       <asp:BoundField HeaderText ="Medicine Id" DataField="MedicineId" /> 
       <asp:BoundField HeaderText ="Pharmacy Id" DataField="PharmacyId" /> 
       <asp:BoundField HeaderText ="Doctor Id" DataField="DoctorId" /> 
       <asp:BoundField HeaderText ="Date Ordered" DataField="Dateordered" /> 
       <asp:TemplateField HeaderText="Approve/Unapprove"> 
        <ItemTemplate> 
         <asp:CheckBox ID="chkApproved" AutoPostBack="true" Checked='<%# Eval("Approved") == null || Eval("Approved") == DBNull.Value ? false : Eval("Approved") %>' runat="server" OnCheckedChanged="chkApproved_CheckedChanged" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 

コード:

protected void chkApproved_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox chkApproved = (CheckBox)sender; 
    GridViewRow gridViewRow = (GridViewRow)chkApproved.Parent.Parent; 
    int orderID = (int)GridViewdoc.DataKeys[gridViewRow.RowIndex].Value; 
    bool approved = chkApproved.Checked; 

    //Your update method 
    UpdateApproved(orderID, approved); 
    //Your data load method 
    LoadData(); 
} 
+0

こんにちは、マイケル・アンケーに答えてください。これを私のgridview(背後のコードなし)に適用し、ページを開くと(前にグリッドが表示された)、次のエラーが表示される - '/'アプリケーションのサーバーエラー。 コンパイルエラー 説明:この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました。以下の特定のエラーの詳細を確認し、ソースコードを適切に変更してください。 コンパイラのエラーメッセージ:コンパイラがエラーコード1で失敗しました。 – laurajs

+0

コードが必要です。もしあなたがaspx部分だけを実行したいのであれば: OnCheckedChanged = "chkApproved_CheckedChanged" – Michael

+0

マイケル、この助けに感謝しています:)私はこれを取り出しましたが、 'Checked = '<%#Eval "承認済み")%> ''それは言っています追加情報: 'DBNull'タイプから 'Boolean'タイプへの変換は無効です。 - それを削除したときに出てきたグリッド内の唯一のものはチェックボックスでしたが、通常表示されるグリッドの残りの部分には参加しませんでした。 – laurajs

関連する問題