簡體   English   中英

如何在ASP.net GridView中按列刪除重復項

[英]How to Remove Duplicates By Column in ASP.net GridView

我的ASPX頁面中有以下GridView

<asp:GridView ID="tbl_report" runat="server" AutoGenerateColumns="False" GridLines="None" CssClass="CSSTable">

        <Columns>  
        <asp:BoundField DataField="StudentID" HeaderText="Student ID" HeaderStyle-Width="300px"/> 
         <asp:BoundField DataField="FirstName" HeaderText="First Name" HeaderStyle-Width="250px"/>  
        <asp:BoundField DataField="LastName" HeaderText="Last Name" HeaderStyle-Width="250px"/> 
         <asp:BoundField DataField="ExamID" HeaderText="Exam ID" HeaderStyle-Width="250px"/> 
          <asp:BoundField DataField="ExamName" HeaderText="Exam Name" HeaderStyle-Width="250px"/> 
          <asp:BoundField DataField="SubjectName" HeaderText="Subject" HeaderStyle-Width="250px"/> 
         <asp:BoundField DataField="Marks" HeaderText="Marks" HeaderStyle-Width="100px"/> 

      <asp:BoundField DataField="Result" HeaderText="Result" HeaderStyle-Width="100px"/>  
    </Columns>  

</asp:GridView>

通過以下方法生成的

protected void view_Report(object sender, EventArgs e)
        {
            String classname = txt_classname.SelectedValue;
            db = new DBConnection();
            db.getConnection();
            dt = db.executeSelectQuery("select s.StudentID,s.FirstName,s.LastName,eh.ExamID,eh.ExamName,sub.SubjectName,se.Marks,se.Result from ExamHeader eh inner join Grade g on eh.GradeName = g.GradeName inner join Class c on c.GradeName = g.GradeName inner join StudentToExam se on se.ExamID = eh.ExamID inner join Student s on s.StudentID = se.StudentID inner join Subject sub on eh.ExamSubjectID = sub.SubjectID where c.ClassName = '"+classname+"' and eh.ExamPublished = 'Yes' and eh.ExamDate <= GETDATE() order by s.StudentID");
            tbl_report.DataSource = dt;
            tbl_report.DataBind();
        }

例如我得到以下結果

在此處輸入圖片說明

我想要做的是刪除重復的數據,並在出現這種情況的地方將這三列留空,例如在上面我四舍五入的情況下。 請給我建議一種方法。

我認為以下邏輯將對您有所幫助。您需要對RowDataBound事件設置重復的列。

protected void view_Report(object sender, EventArgs e)
        {
    //=====Change Code===========================
        ViewState["PrevRecordStudentID"] = 0;
            ViewState["PrevRecordFirstName"] = "";
            ViewState["PrevRecordLastName"] = "";
    //=====Change Code===========================

            String classname = txt_classname.SelectedValue;
            db = new DBConnection();
            db.getConnection();
            dt = db.executeSelectQuery("select s.StudentID,s.FirstName,s.LastName,eh.ExamID,eh.ExamName,sub.SubjectName,se.Marks,se.Result from ExamHeader eh inner join Grade g on eh.GradeName = g.GradeName inner join Class c on c.GradeName = g.GradeName inner join StudentToExam se on se.ExamID = eh.ExamID inner join Student s on s.StudentID = se.StudentID inner join Subject sub on eh.ExamSubjectID = sub.SubjectID where c.ClassName = '"+classname+"' and eh.ExamPublished = 'Yes' and eh.ExamDate <= GETDATE() order by s.StudentID");
            tbl_report.DataSource = dt;
            tbl_report.DataBind();
        }


//=====Add Code===========================
 protected void tbl_report_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.Cells[0].Text == Convert.ToString(ViewState["PrevRecordStudentID"]) && e.Row.Cells[1].Text == Convert.ToString(ViewState["PrevRecordFirstName"]) && e.Row.Cells[2].Text == Convert.ToString(ViewState["PrevRecordLastName"]))
            {
                e.Row.Cells[0].Text = "";
                e.Row.Cells[1].Text = "";
                e.Row.Cells[2].Text = "";
            }
            else
            {
                ViewState["PrevRecordStudentID"] = Convert.ToInt32(e.Row.Cells[0].Text) ;
                ViewState["PrevRecordFirstName"] = Convert.ToString(e.Row.Cells[1].Text);
                ViewState["PrevRecordLastName"] = Convert.ToString(e.Row.Cells[2].Text);
            }
        }
    }
//=====Add Code===========================


//=====Change Code===========================
 <asp:GridView ID="tbl_report" runat="server" AutoGenerateColumns="False" 
        GridLines="None" CssClass="CSSTable" onrowdatabound="tbl_report_RowDataBound">
//=====Change Code===========================

暫無
暫無

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

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