簡體   English   中英

Gridview僅顯示第一條記錄

[英]Gridview displays first record only

在我的網頁中,我能夠成功檢索所有記錄。 我正在使用一個下拉列表根據不同的“狀態”過濾記錄。 但是,它僅顯示第一個檢索到的記錄。沒有異常或錯誤。 當我在數據庫中運行查詢(以測試我的sql語句)時,檢索到了3條記錄。 我仍然無法確定我的代碼出了什么問題。

我正在研究三層Web應用程序。

這是我的表示層代碼,

 protected void ddl_status_SelectedIndexChanged(object sender, EventArgs e)
    {
        string status = ddl_status.SelectedItem.ToString();

            //Default
            if (status == "Show All Submissions")
            {
                gv_combinedEntries.Visible = true;
                SubmissionBLL sBLL = new SubmissionBLL();

                //Call getAllStudent() method in StudentBLL
                List<Submission> subAll = new List<Submission>();

                subAll = sBLL.getAllSub();

                gv_combinedEntries.DataSource = subAll;
                gv_combinedEntries.DataBind();
            }

            else 
            {
                SubmissionBLL subStatus = new SubmissionBLL();
                List<Submission> subList = new List<Submission>();
                subList = subStatus.getStatusList(status);
                gv_combinedEntries.DataSource = subList;
                gv_combinedEntries.DataBind();
            }
    }

業務邏輯層:

public List<Submission> getStatusList(string statusPick)
{
        List<Submission> specificStatus = new List<Submission>();
        Submission sub2 = new Submission();
        specificStatus = sub2.getStatusNewList(statusPick);
        return specificStatus;
 }

數據訪問層:

 public List<Submission> getStatusNewList(string statusSelected)
    {
        List<Submission> subStatus = new List<Submission>();
        string Id, School, TeamName, submissionDate, status;

        string queryStr = "SELECT s.Id,c.School,c.TeamName,s.submissionDate,
        c.submissionStatus FROM TeamSubmission s INNER JOIN Competition c
        ON c.teamUsername = s.username WHERE submissionStatus = @enterStatus";

        SqlConnection conn = new SqlConnection(_connStr);
        SqlCommand cmd = new SqlCommand(queryStr, conn);

        cmd.Parameters.AddWithValue("@enterStatus", statusSelected);

        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            Id = dr["Id"].ToString();
            School = dr["School"].ToString();
            TeamName = dr["TeamName"].ToString();
            submissionDate = dr["submissionDate"].ToString();
            status = dr["submissionStatus"].ToString();

            subStatus.Add(new Submission(Id, School, TeamName, submissionDate, status));
        }

        conn.Close();
        dr.Close();
        dr.Dispose();

        return subStatus;
    }

您需要將if(dr.Read())語句更改為一會兒(dr.Read())

 while (dr.Read())
        {
            Id = dr["Id"].ToString();
            School = dr["School"].ToString();
            TeamName = dr["TeamName"].ToString();
            submissionDate = dr["submissionDate"].ToString();
            status = dr["submissionStatus"].ToString();

            subStatus.Add(new Submission(Id, School, TeamName, submissionDate, status));
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM