我有两张表,医生和医学史,彼此有关系。我使用外连接在医生表中显示医生名称而不是doctorID。现在我想要的是显示标签中记录最多的Doctor名称。看到第一张图片,因为杰克有3张唱片而约翰只有1张唱片,我想在标签上显示杰克。所以输出将是GP:Jack。标签名称称为lblGP。除了我如何编写数据集的RadioSpace方法之外的任何其他帮助。帮助???
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
public partial class member_viewmedicalhistory : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
// call BindGridView
bindGridView();
}
}
private void bindGridView()
{
int ID = Convert.ToInt32(Session["ID"].ToString());
//get connection string from web.config
string strConnectionString = ConfigurationManager.ConnectionStrings["sacpConnectionString"].ConnectionString;
SqlConnection myConnect = new SqlConnection(strConnectionString);
string strCommandText = "SELECT convert(varchar, mCheckupDate, 103) AS CheckUpDate, mReview AS Review, pat.pFirstName AS FirstName, doc.dFirstName as Doctor, ill.illnessType from medicalhistory AS hist ";
strCommandText += " LEFT OUTER JOIN PATIENT as pat on hist.patientid = pat.patientid ";
strCommandText += " LEFT OUTER JOIN DOCTOR as doc on hist.doctorid = doc.doctorid ";
strCommandText += " LEFT OUTER JOIN ILLNESS as ill on hist.illnessid = ill.illnessid ";
strCommandText += " WHERE hist.patientid = " + ID.ToString();
try
{
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
myConnect.Open();
SqlDataReader reader = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
GrdViewMedicalHistory.DataSource = dt;
GrdViewMedicalHistory.DataBind();
lblResult.Text = "";
reader.Close();
}
catch (SqlException ex)
{
lblResult.Text = "Error:" + ex.Message.ToString();
}
finally
{
myConnect.Close();
}
}
}
答案 0 :(得分:0)
我的第一个建议是使用
string strCommandText = @"SELECT convert(varchar, mCheckupDate, 103) AS CheckUpDate, mReview
AS Review, pat.pFirstName AS FirstName, doc.dFirstName as Doctor, ill.illnessType from
medicalhistory AS hist
LEFT OUTER JOIN PATIENT as pat on hist.patientid = pat.patientid
LEFT OUTER JOIN DOCTOR as doc on hist.doctorid = doc.doctorid
LEFT OUTER JOIN ILLNESS as ill on hist.illnessid = ill.illnessid
WHERE hist.patientid = " + ID.ToString();
第二个只是使用第二个datareader和datatable并写一个查询来返回你想要的东西,然后将其插入你的标签
或捷径您可以使用LINQ dT.Select()....First();//return string
类型代码
关于无类型数据集的文章和linq:http://msdn.microsoft.com/en-us/library/bb399399(v=vs.110).aspx
哦,看起来你使用VS你应该能够自动生成一个类型化的数据集。这将使事情变得更容易。