C# 在gridview中添加空行的问题
我从db表中提取数据,将其绑定到gridview,然后将数据从gridview导出到excel。它很好用 但当我使用以下代码在databound事件中的gridview顶部添加一行时:C# 在gridview中添加空行的问题,c#,asp.net,excel,gridview,C#,Asp.net,Excel,Gridview,我从db表中提取数据,将其绑定到gridview,然后将数据从gridview导出到excel。它很好用 但当我使用以下代码在databound事件中的gridview顶部添加一行时: protected void gvReports_DataBound(object sender, EventArgs e) { if (gvReports.Rows.Count > 0) { GridViewRow row = new GridViewRow(0, 0, D
protected void gvReports_DataBound(object sender, EventArgs e)
{
if (gvReports.Rows.Count > 0)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
int count = gvReports.HeaderRow.Cells.Count;
TableHeaderCell cell = new TableHeaderCell();
cell.BorderWidth = 0;
cell.Text = "Commodity " + ddlCommMFArrival.SelectedItem.Text;
cell.ColumnSpan = count - 2;
row.Controls.Add(cell);
row.BackColor = ColorTranslator.FromHtml("#f5fafd");
gvReports.HeaderRow.Parent.Controls.AddAt(0, row);
}
}
将Gridview导出到Excel的代码:
protected void btnExport_Click(object sender, EventArgs e)
{
for (int i = 0; i < gvReports.Rows.Count; i++)
{
for (int j = 0; j < gvReports.Rows[i].Cells.Count; j++)
{
if (gvReports.Rows[i].Cells[j].Text == "NA")
{
gvReports.Rows[i].Cells[j].HorizontalAlign = HorizontalAlign.Right;
}
}
}
gvReports.HeaderRow.Cells[1].Visible = false;
gvReports.HeaderRow.Cells[2].Visible = false;
string filename = string.Empty;
int ddlselect = Convert.ToInt32(ddlCommMFArrival.SelectedValue);
if (ddlselect == 1)
{
filename = "MarketFee" + DateTime.Now.ToString().Replace("/", "").Replace(":", "").Replace(" ", "") + "";
}
else if (ddlselect == 2)
{
filename = "Commodity Arrival" + DateTime.Now.ToString().Replace("/", "").Replace(":", "").Replace(" ", "") + "";
}
//Export gridview data into MS Excel
blExportToExcel blExport = new blExportToExcel();
//Export gridview data into MS Excel
blExport.ExportGridViewToExcel(gvReports, this, filename);
}
public void ExportGridViewToExcel(GridView grv, System.Web.UI.Page pg, string fileName)
{
grv.AllowPaging = false;
pg.Response.Clear();
pg.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xls");
pg.Response.Charset = "";
pg.Response.ContentType = "application/vnd.xls";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
grv.RenderControl(htmlWrite);
pg.Response.Write(stringWrite.ToString());
pg.Response.End();
grv.AllowPaging = true;
}
protectedvoid btnExport\u单击(对象发送方,事件参数e)
{
对于(int i=0;i
然后在位置0和excel中添加一个空行(将数据从gridview导出到excel),并截断gridview中的最后一行。有人知道问题出在哪里吗?尝试将您的
HeaderRow
添加逻辑从数据绑定中移入行创建的。将此添加到GridView
声明中:
OnRowCreated="gvReports_RowCreated"
然后这是创建的行(注意DataControlRowState.Insert
):
如何以及何时将数据导出到Excel?@Eugene Podskal,我已经编辑了我的问题。请检查。是否调试了代码???网格需要标记@Ganesh_Devlekar,是的,我已经调试了代码,在databound事件中将行添加到gridview之后,将在gridview标题行之后的位置0添加一个空行。
protected void gvReports_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
int count = e.Row.Cells.Count;
TableHeaderCell cell = new TableHeaderCell();
cell.BorderWidth = 0;
cell.Text = "blah";
cell.ColumnSpan = count - 2;
row.Controls.Add(cell);
row.BackColor = ColorTranslator.FromHtml("#f5fafd");
gvReports.Controls[0].Controls.AddAt(0, row);
}
}