以前从来没有使用过GridView的自定义表头功能,但是由于业务的需要,不得不自己做一个自定义的表头来实现所需要的效果,经过网上的搜索查资料,最后终于做了出来,其效果如下:
代码如下:
protected void gvSchoolWorkLoad_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
TableCellCollection tcHeader = e.Row.Cells;
tcHeader.Clear();
GridViewRow headRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
TableCell cellDepartment = new TableCell();
cellDepartment.Style["Width"] = "150px";
cellDepartment.RowSpan = 3;
cellDepartment.Text = "学院";
headRow.Cells.Add(cellDepartment);
TableCell cellAchievement = new TableCell();
cellAchievement.ColumnSpan = 25;
cellAchievement.RowSpan = 1;
cellAchievement.Text = "科研成果";
headRow.Cells.Add(cellAchievement);
TableCell cellTotalAmount = new TableCell();
cellTotalAmount.RowSpan = 3;
cellTotalAmount.Text = "总数量";
headRow.Cells.Add(cellTotalAmount);
TableCell cellTotalWorkLoad = new TableCell();
cellTotalWorkLoad.RowSpan = 3;
cellTotalWorkLoad.Text = "总学时</th></tr><tr>";
headRow.Cells.Add(cellTotalWorkLoad);
TableCell cellThesis = new TableCell();
cellThesis.Text = "论文";
cellThesis.ColumnSpan = 2;
headRow.Cells.Add(cellThesis);
TableCell cellConference = new TableCell();
cellConference.Text = "会议论文";
cellConference.ColumnSpan = 2;
headRow.Cells.Add(cellConference);
TableCell cellBook = new TableCell();
cellBook.Text = "著作";
cellBook.ColumnSpan = 2;
headRow.Cells.Add(cellBook);
TableCell cellCountry = new TableCell();
cellCountry.Text = "国家级";
cellCountry.ColumnSpan = 2;
headRow.Cells.Add(cellCountry);
TableCell cellProvince = new TableCell();
cellProvince.Text = "省级";
cellProvince.ColumnSpan = 2;
headRow.Cells.Add(cellProvince);
TableCell cellCity = new TableCell();
cellCity.Text = "厅级";
cellCity.ColumnSpan = 2;
headRow.Cells.Add(cellCity);
TableCell cellGainPrize = new TableCell();
cellGainPrize.Text = "获奖";
cellGainPrize.ColumnSpan = 2;
headRow.Cells.Add(cellGainPrize);
TableCell cellStudent = new TableCell();
cellStudent.Text = "指导学生";
cellStudent.ColumnSpan = 1;
headRow.Cells.Add(cellStudent);
TableCell cellThesisSearch = new TableCell();
cellThesisSearch.Text = "检索";
cellThesisSearch.ColumnSpan = 2;
headRow.Cells.Add(cellThesisSearch);
TableCell cellGainPatent = new TableCell();
cellGainPatent.Text = "专利";
cellGainPatent.ColumnSpan = 2;
headRow.Cells.Add(cellGainPatent);
TableCell cellProjectAccept = new TableCell();
cellProjectAccept.Text = "课题验收</th></tr></tr>";
cellProjectAccept.ColumnSpan = 6;
headRow.Cells.Add(cellProjectAccept);
//论文的
TableCell cellThesisTotalAmount = new TableCell();
cellThesisTotalAmount.Text = "总数量";
headRow.Cells.Add(cellThesisTotalAmount);
TableCell cellThesisWorkLoad = new TableCell();
cellThesisWorkLoad.Text="总学时";
headRow.Cells.Add(cellThesisWorkLoad);
//会议论文的
TableCell cellConferenceTotalAmount = new TableCell();
cellConferenceTotalAmount.Text = "总数量";
headRow.Cells.Add(cellConferenceTotalAmount);
TableCell cellConferenceWorkLoad = new TableCell();
cellConferenceWorkLoad.Text = "总学时";
headRow.Cells.Add(cellConferenceWorkLoad);
//著作的
TableCell cellBookTotalAmount = new TableCell();
cellBookTotalAmount.Text = "总数量";
headRow.Cells.Add(cellBookTotalAmount);
TableCell cellBookWorkLoad = new TableCell();
cellBookWorkLoad.Text = "总学时";
headRow.Cells.Add(cellBookWorkLoad);
//国家级的
TableCell cellCountryTotalAmount = new TableCell();
cellCountryTotalAmount.Text = "总数量";
headRow.Cells.Add(cellCountryTotalAmount);
TableCell cellCountryWorkLoad = new TableCell();
cellCountryWorkLoad.Text = "总学时";
headRow.Cells.Add(cellCountryWorkLoad);
//省级的
TableCell cellProvinceTotalAmount = new TableCell();
cellProvinceTotalAmount.Text = "总数量";
headRow.Cells.Add(cellProvinceTotalAmount);
TableCell cellProvinceWorkLoad = new TableCell();
cellProvinceWorkLoad.Text = "总学时";
headRow.Cells.Add(cellProvinceWorkLoad);
//厅级的
TableCell cellCityTotalAmount = new TableCell();
cellCityTotalAmount.Text = "总数量";
headRow.Cells.Add(cellCityTotalAmount);
TableCell cellCityWorkLoad = new TableCell();
cellCityWorkLoad.Text = "总学时";
headRow.Cells.Add(cellCityWorkLoad);
//获奖的
TableCell cellGainPrizeTotalAmount = new TableCell();
cellGainPrizeTotalAmount.Text = "总数量";
headRow.Cells.Add(cellGainPrizeTotalAmount);
TableCell cellGainPrizeWorkLoad = new TableCell();
cellGainPrizeWorkLoad.Text = "总学时";
headRow.Cells.Add(cellGainPrizeWorkLoad);
//指导学生的
TableCell cellStudentWorkLoad = new TableCell();
cellStudentWorkLoad.Text = "总学时";
headRow.Cells.Add(cellStudentWorkLoad);
//检索的
TableCell cellThesisSearchTotalAmount = new TableCell();
cellThesisSearchTotalAmount.Text = "总数量";
headRow.Cells.Add(cellThesisSearchTotalAmount);
TableCell cellThesisSearchWorkLoad = new TableCell();
cellThesisSearchWorkLoad.Text = "总学时";
headRow.Cells.Add(cellThesisSearchWorkLoad);
//专利的
TableCell cellGainPatentTotalAmount = new TableCell();
cellGainPatentTotalAmount.Text = "总数量";
headRow.Cells.Add(cellGainPatentTotalAmount);
TableCell cellGainPatentWorkLoad = new TableCell();
cellGainPatentWorkLoad.Text = "总学时";
headRow.Cells.Add(cellGainPatentWorkLoad);
//教改成果的
TableCell cell = new TableCell();
cell.Text = "教改总数量";
headRow.Cells.Add(cell);
TableCell cell0 = new TableCell();
cell0.Text = "教改总学时";
headRow.Cells.Add(cell0);
//理工类的
TableCell cellScinceTotalAmount = new TableCell();
cellScinceTotalAmount.Text = "理工类总数量";
headRow.Cells.Add(cellScinceTotalAmount);
TableCell cellScinceWorkLoad = new TableCell();
cellScinceWorkLoad.Text = "理工类总学时";
headRow.Cells.Add(cellScinceWorkLoad);
//人文类的
TableCell cellArtsTotalAmount = new TableCell();
cellArtsTotalAmount.Text = "人文类总数量";
headRow.Cells.Add(cellArtsTotalAmount);
TableCell cellArtsWorkLoad = new TableCell();
cellArtsWorkLoad.Text = "人文类总学时";
headRow.Cells.Add(cellArtsWorkLoad);
gvSchoolWorkLoad.Controls[0].Controls.AddAt(0, headRow);
}
}
其实比较简单的,但是我尝试了好几种方法,最终做出这种效果。