如何计算gridview中记录最多的字段并将其显示在标签中?

时间:2014-02-01 19:33:02

标签: c# gridview count record outer-join

我有两张表,医生和医学史,彼此有关系。我使用外连接在医生表中显示医生名称而不是doctorID。现在我想要的是显示标签中记录最多的Doctor名称。看到第一张图片,因为杰克有3张唱片而约翰只有1张唱片,我想在标签上显示杰克。所以输出将是GP:Jack。标签名称称为lblGP。除了我如何编写数据集的RadioSpace方法之外的任何其他帮助。帮助???

enter image description here

enter image description here

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

    }
}

1 个答案:

答案 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你应该能够自动生成一个类型化的数据集。这将使事情变得更容易。