2016-07-04 2 views
2

У меня есть GridView, удерживающий мою таблицу заказов (это вставленные значения из инструкции insert). Таблица заказов отображается на странице врача, но я хочу добавить к ней, чтобы ее можно было одобрить/не одобрить (если она установлена, а затем обновить столбец «Утвердить» до одобренного, если не проверить, обновить столбец «Утвердить», чтобы он не был одобрен. нужно добавить CheckBox столбец в GridView для этого. Это часть моего обучения (не живой веб-сайт).Получить 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 

Мой оператор выбора, который тянет данные:

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) 

Как стол заказов теперь выглядит (все это фиктивная данные:

A кнопка. событие click затем отправит проверенные значения Если кому-то нужна дополнительная информация по этому вопросу, пожалуйста, дайте мне знать.

+0

Ваш DB поле "Approved" является 'VARCHAR (50)'. Это поле, которое вы хотите использовать в качестве источника для столбца? Если это так, это должно быть бит типа – Andrei

+0

Hi @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 («Approved»)%> ''Это говорит Дополнительная информация: Преобразование из типа DBNull для ввода« Boolean »недопустимо. - Когда я удалил это, единственное, что появилось в сетке, было флажками и не присоединилось к остальной части сетки, которая обычно появляется. – laurajs

Смежные вопросы