方案
我想通過比較參數,如種族,宗教,性別,言語,計算和排名醫護人員是否適合特定的患者,/更新電池等讀取和修改DataTable中
HealthcareWorker table
----------------------
ID (int)
name (varchar)
race (varchar)
religion (varchar)
gender (varchar)
german (bit)
french (bit)
english (bit)
Patient table
-------------
ID (int)
name (varchar)
race (varchar)
religion (varchar)
gender (varchar)
german (bit)
french (bit)
english (bit)
頁面佈局
在page1.aspx
,會顯示所有Patients
的細節gridview
表。然後 用戶將選擇Patient
和被引導至page2.aspx
在page2.aspx
會有表示在score
的形式,各Healthcare Worker
的細節和他是否適合與選定的patient
的表。表格中還將有checkboxes
,以便將多個Healthcare Worker
分配給選定的Patient
。
page2.aspx
| ID | name | religion | gender | german | french | english | score | |
|----+-------+----------+---------+----------+---------+----------+--------+----------|
| 4 | mary | | f | 1 | 0 | 1 | 132 | checkbox |
| 2 | john | | m | 0 | 1 | 1 | 125 | checkbox |
| 3 | tim | | m | 1 | 0 | 1 | 98 | checkbox |
| 1 | jane | | f | 1 | 1 | 0 | 55 | checkbox |
分數的計算將是這樣的:
if patient.race = healthcareworker.race then healthcarework.score +10
if patient.religion = healthcareworker.religion then healthcarework.score +10
if at least one of patient's language match with healthcareworker's language then healthcarework.score +10
代碼:
Dim strCon As String = ConfigurationManager.ConnectionStrings("ConnectionString1").ConnectionString
Dim con As New SqlConnection(strCon)
Dim query As String = "select *, CAST (0 as int) score from HealthcareWorker;"
Dim cmd As SqlCommand = New SqlCommand(query, con)
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim dt As DataTable = New DataTable()
dt.Load(dr)
'code to read cell
'code to compare and compute
'code to update the score in each row
GridView1.DataSource = dt
GridView1.DataBind()
con.Close()
如何讀取和修改DataTable中的細胞? 我想要讀取並比較每行中某些單元格的數據,然後更新score
值。
我需要更新每行的score
,所以我將需要一個循環,但我不知道在手前將加載到datatable
的行數。 如何獲得datatable
中的行數?
編輯/更新:修改了整個問題提供(很多)的更多背景信息
你爲什麼不在數據庫中這樣做?所以用實際計算替換CAST(0爲int)。除此之外,還不清楚你想如何計算分數,'select *'沒有幫助。 –
我簡化了我的實際場景,使其更容易解釋。不要擔心我如何計算'分數'。 '分數'更多的是決定配對矩陣分數而不是遊戲分數。 'score'並不存儲在數據庫中,而是隨時計算和存儲,因爲'score'只適用於'table1'中特定行中的值與另一個表中另一行中值的另一組合。 –
這並不能解釋爲什麼你不能在sql中計算它。你可以在table.Rows上使用for-loop或foreach-loop。但是因爲我不知道這個模式,所以我不能舉一個例子。要訪問和轉換列,請使用row.Field。 –