using System; using System.Data; using System.IO; using System.Text; using System.Transactions; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using DeiNiu.wms.Logical; using DeiNiu.Utils; public partial class ProjectApprove : PageBase { private LProject _logic; private string authType = ""; protected void Page_Load(object sender, EventArgs e) { // divPreApproveSubmit.Visible = authType.Equals("100"); //副职登录 // divApproveSubmit.Visible = authType.Equals("200"); //正职登录 // emId = Master.lem.GetEmployee.ID; masterpage has not been initialized yet    authType = Request.QueryString[0] ; if (!IsPostBack) { if (lem == null) return ; _logic = new LProject(); initializeControles(); Databound(); } SessionSeting(); } /***************************************** private methods ******************************************/ /// /// bound the query list. /// private void Databound() { GridView1.DataSource = GetProjectListByRole(); GridView1.DataBind(); UpdateSession(); // btnSubmit.Enabled = false; ClearProjDetailData(); ClearProjData(); PanelApprove.Visible = false; } /// /// 通过判断当前用户的身份,确定返回不同的项目列表 /// /// DataView GetProjectListByRole() { if(authType.Equals("100")) //预审、审核 { if (lem.CanShenHe || lem.CanYuShen) // 分析当前用户所在组的项目操作权限 { return _logic.Get4ApproveList(lem.GetCanApproveDeptList(),btnYear.Text, rdblstMonth.SelectedValue).DefaultView; } } if (authType.Equals("200")) if (lem.CanKaoHe ) // 考核 { DataView dv = _logic.GetProjectsByYearMonth(btnYear.Text, rdblstMonth.SelectedValue).DefaultView; dv.RowFilter = "pj_status in('" + ProjectStatus.新增审核通过 + "','" + ProjectStatus.项目完成 + "','" +ProjectStatus.删减审核通过+ "') and pd_status not in ('" + ProjectDetailStatus.考核通过 + "','" +ProjectDetailStatus.考核未通过 +"')" + " or pd_status in('" + ProjectDetailStatus.审核通过 + "')"; return dv; } if (authType.Equals("300")) if (lem.CanKaoHe) // 考核历史记录 { DataView dv = _logic.GetKaoHeHistoryProjectsByYearMonth(btnYear.Text, rdblstMonth.SelectedValue).DefaultView; dv.RowFilter = "pj_status in('" + ProjectStatus.新增审核通过 + "','" + ProjectStatus.项目完成 + "')"; return dv; } return new DataView(); } void initializeControles() { btnYear.Text = DateTime.Today.Year.ToString(); rdblstMonth.SelectedItem.Selected = false; rdblstMonth.Items.FindByValue(DateTime.Today.Month.ToString()).Selected = true; drpdProjlisFromYear.Items.Clear(); drplstProjectToYear.Items.Clear(); for (int i = DateTime.Now.Year-10; i < DateTime.Now.Year + 10; i++) { ListItem li = new ListItem(i.ToString(),i.ToString()); drpdProjlisFromYear.Items.Add(li); drplstProjectToYear.Items.Add(li); } SetDropDownlistSelection(drplstProjectToYear, DateTime.Now.Year.ToString()); SetDropDownlistSelection(drpdProjlisFromYear, DateTime.Now.Year.ToString()); drplstProjDept.DataSource = lem.GetEmployee.GetDepartments(); drplstProjDept.DataTextField = "DEP_NAME"; drplstProjDept.DataValueField = "ID"; drplstProjDept.DataBind(); } private void SessionSeting() { if (IsPostBack) { _logic = (LProject)Session[appScope.PagelevelObj]; } } private void UpdateSession() { Session[appScope.PagelevelObj] = _logic; } /// /// 绑定当前项目信息到页面的项目基本信息区 /// void ProjectDataBind() { ProjectDetail.Visible = true; txtProjectName.Text = _logic.GetProject.pj_name; SetDropDownlistSelection(drpdProjlisFromYear, Convert.ToDateTime(_logic.GetProject.pj_planStartDate) .Year.ToString()); SetDropDownlistSelection(drplstProjFromMonth, Convert.ToDateTime(_logic.GetProject.pj_planStartDate).Month.ToString()); SetDropDownlistSelection(drplstProjectToYear, Convert.ToDateTime(_logic.GetProject.pj_planEndDate).Year.ToString()); SetDropDownlistSelection(drlstProjToMonth, Convert.ToDateTime(_logic.GetProject.pj_planEndDate).Month.ToString()); txtPrjDesc.Text = _logic.GetProject.pj_mem; txtProjProgress.Text = _logic.GetProject.pj_progress.ToString(); //项目进度 txtProjPercent.Text = _logic.GetProject.pj_percent.ToString(); //项目权重 SetDropDownlistSelection(drplstProjType, _logic.GetProject.pj_type); txtProjMem4delete.Visible = _logic.GetProject.pj_status == DeiNiu.Utils.ProjectStatus.新增未提交; lbprjmem4Delete.Visible = _logic.GetProject.pj_status == DeiNiu.Utils.ProjectStatus.新增未提交; txtProjMem4delete.Text = _logic.GetProject.pj_mem4del; validControles(); ApproveListBind(_logic.GetProject.ID); SetDropDownlistSelection(drplstProjDept, _logic.GetProject.pj_dept.ToString() ); divApproveScore.Visible = false; } void ApproveListBind(int id) { RepeaterApproveList.DataSource = _logic.PaObj.GetApproveListByTastkId(id); RepeaterApproveList.DataBind(); panelApprovelist.Visible = true; } /// /// set data from shift object to page /// private void ProjectDetailDataBind() { ProjectMonthDetail.Visible = true; txtPdName.Text = _logic.GetProject.pj_name; txtPdStartDate.Text = _logic.GetProject.pj_planStartDate; txtPdEndDate.Text = _logic.GetProject.pj_planEndDate; txtPrjProgress.Text = _logic.GetProject.pj_progress.ToString(); txtPdActualEndDate.Text = _logic.GetProject.pj_finishDate; txtPdPlanTarget.Text = _logic.GetProjectDetail.pd_planTarget; txtPdFinishTarget.Text = _logic.GetProjectDetail.pd_finishedTarget; txtPdPercent.Text = _logic.GetProjectDetail.pd_percent.ToString(); txtPdMem.Text = _logic.GetProjectDetail.pd_mem; ApproveListBind(_logic.GetProjectDetail.ID); //bind the files GVFiles.DataSource = _logic.GetProjectDetail.GetFiles(); GVFiles.DataBind(); validControles(); MonthlyScore(); } void MonthlyScore() { divApproveScore.Visible = true; txtSystemScore.Text = (Convert.ToDouble(_logic.GetProject.pj_percent*_logic.GetProjectDetail.pd_percent)/100).ToString(); } /// /// set data from shift object to page /// private void ClearProjDetailData() { ProjectMonthDetail.Visible = false; txtPdName.Text = ""; txtPdStartDate.Text = ""; txtPdEndDate.Text = ""; txtPrjProgress.Text = ""; txtPdActualEndDate.Text = ""; txtPdPlanTarget.Text =""; txtPdFinishTarget.Text = ""; txtPdPercent.Text = ""; txtPdMem.Text =""; //bind the files GVFiles.DataSource = _logic.GetProjectDetail.GetFiles(); GVFiles.DataBind(); } /************************************** protected methods (event listeners) ********************************/ protected void DetailsView1_PageIndexChanging(object sender, DetailsViewPageEventArgs e) { } protected void GridView1_PageIndexChanged(object sender, EventArgs e) { } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; Databound(); //GridView1.DataSource = shiftLgc.getAllShifts().Tables[0]; // GridView1.DataBind(); } protected void GridView1_DataBinding(object sender, EventArgs e) { } protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { } /***************************************** internal methods ********************************************/ private void ClearProjData() { ProjectDetail.Visible = false; txtProjectName.Text = ""; SetDropDownlistSelection(drpdProjlisFromYear, DateTime.Now.Year.ToString()); SetDropDownlistSelection(drplstProjFromMonth, DateTime.Now.Month.ToString()); SetDropDownlistSelection(drplstProjectToYear, DateTime.Now.Year.ToString()); SetDropDownlistSelection(drlstProjToMonth, DateTime.Now.Month.ToString()); txtProjMaster.Text = ""; txtPrjDesc.Text =""; txtProjProgress.Text = ""; //项目进度 txtProjPercent.Text = ""; //项目权重 // SetDropDownlistSelection(drplstProjType, _logic.GetProject.pj_type); txtProjMem4delete.Visible =false; lbprjmem4Delete.Visible =false; txtProjMem4delete.Text = ""; } protected void SetDropDownlistSelection(DropDownList drdlst,string value) { drdlst.Items[drdlst.SelectedIndex].Selected = false; if (drdlst.Items.FindByValue(value)!=null) drdlst.Items.FindByValue(value).Selected = true; } /// /// edit project detail /// /// /// protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { /* chgOperTxt(false); if (GridView1.DataKeys != null) { string id = GridView1.DataKeys[e.NewEditIndex].Value.ToString(); _logic.Initialize(int.Parse(id)); } Databound(); ProjectDetailDataBind(); */ }   /// /// 显示项目基本信息 /// /// /// protected void GridView1_EditProject(object sender, GridViewDeleteEventArgs e) { if (GridView1 != null) { if (GridView1.DataKeys != null) { string id = GridView1.DataKeys[e.RowIndex].Value.ToString(); _logic.Initialize(int.Parse(id)); } } GridView1.SelectedIndex = e.RowIndex; Databound(); ProjectDataBind(); PanelApprove.Visible = true; } /// /// 进度编辑/计划 /// /// /// protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { if (GridView1.DataKeys != null) { string id = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString(); _logic.Initialize(int.Parse(id)); } Databound(); ProjectDetailDataBind(); PanelApprove.Visible = true; divApproveProject.Visible = _logic.GetProject.pj_status == ProjectStatus.新增考核通过 || _logic.GetProject.pj_status == ProjectStatus.项目已分配 || _logic.GetProject.pj_status == ProjectStatus.项目未完成 || _logic.GetProject.pj_status == ProjectStatus.项目完成 || _logic.GetProject.pj_status == ProjectStatus.项目解冻; } void validControles() { txtProjectName.ReadOnly = true; drpdProjlisFromYear.Enabled = false ; drplstProjFromMonth.Enabled = false; drplstProjectToYear.Enabled = false; drlstProjToMonth.Enabled = false; drplstProjType.Enabled = false; txtPrjDesc.ReadOnly = true; txtProjProgress.ReadOnly = true; //项目进度 txtProjPercent.ReadOnly = true; //项目权重 SetDropDownlistSelection(drplstProjType, _logic.GetProject.pj_type); txtProjMem4delete.ReadOnly = true; //新增未提交; // lbprjmem4Delete.Visible = false; drplstProjDept.Enabled = false; //--monthly detail. txtPdName.ReadOnly = true; txtPdStartDate.ReadOnly = true; txtPdEndDate.ReadOnly = true; txtPrjProgress.ReadOnly = true; txtPdActualEndDate.ReadOnly = true; txtPdPlanTarget.ReadOnly = true; txtPdFinishTarget.ReadOnly = true; txtPdPercent.ReadOnly = true; txtPdMem.ReadOnly = true; txtPdName.ReadOnly = true; txtPdStartDate.ReadOnly = true; txtPdEndDate.ReadOnly = true; txtPrjProgress.ReadOnly = true; txtPdActualEndDate.ReadOnly = true; txtPdPlanTarget.ReadOnly = true; txtPdFinishTarget.ReadOnly = true; txtPdPercent.ReadOnly = true; txtPdMem.ReadOnly = true; //--审核按钮 btnApprove.Visible = true; btnReject.Visible = true; } protected void rdblstMonth_SelectedIndexChanged(object sender, EventArgs e) { GridView1.SelectedIndex = -1; Databound(); } protected void btnYear_Click(object sender, EventArgs e) { rdblstMonth.SelectedItem.Selected = false; rdblstMonth.Items[0].Selected = true; Databound(); } void bindProjectNote() { } protected void btnApprove_Click(object sender, EventArgs e) { } protected void btnReject_Click(object sender, EventArgs e) { if (ProjectDetail.Visible) //项目审核 { //判断项目是否已经完成审批,防止在对月度审批时对项目误操作 if (_logic.GetProject.pj_status.Equals(ProjectStatus.新增考核通过)) { if (authType.Equals("100")) //预审、审核 { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经考核通过,不需要再审批,操作失败。');", true); return; } } if (_logic.GetProject.pj_status.Equals(ProjectStatus.新增审核通过)) { if (authType.Equals("100")) //预审、审核 { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经审核通过, 操作失败');", true);return; } if (authType.Equals("200")) //考核,此情况甚少出现,因为尚未结束项目 if (!lem.CanKaoHe) { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经审核通过,您要有考核的权利才能进行考核,操作失败');", true); return; } } //更新项目状态 if (lem.CanKaoHe) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增考核未通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减审核未通过; } else if (lem.CanShenHe) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增审核未通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减审核未通过; } else if (lem.CanYuShen) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增预审未通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减预审未通过; } _logic.PaObj.pa_id = _logic.GetProject.ID; } else { //更新项目月度明细状态 if (lem.CanKaoHe) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.考核未通过; } else if (lem.CanShenHe) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.审核未通过; } else if (lem.CanYuShen) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.预审未通过; } _logic.PaObj.pa_id = _logic.GetProjectDetail.ID; _logic.GetProject.pj_status = ProjectStatus.项目未完成; } using (TransactionScope trans = new TransactionScope()) { try { if (!ProjectDetail.Visible) _logic.GetProjectDetail.Update(); //更新项目主体下一个审批部门 //更新项目主体下一个审批部门 _logic.GetProject.pj_nextDept = -1; _logic.GetProject.Update(); //记录考核动作 _logic.PaObj.pa_dept = _logic.GetProject.pj_dept; _logic.PaObj.pa_emp = lem.GetEmployee.ID; _logic.PaObj.pa_isProj = !ProjectDetail.Visible; _logic.PaObj.pa_mem = txtApproveMem.Text.Trim(); _logic.PaObj.pa_pass = false; _logic.PaObj.Add(); trans.Complete(); } catch (MyException) { throw; } catch (Exception) { throw new Exception("出现异常,项目审批反馈失败。"); } } ApproveListBind(_logic.GetProject.ID); GridView1.SelectedIndex = -1; Databound();//重新绑定数据 txtApproveMem.Text = ""; // ApproveListBind(_logic.GetProject.ID); // ProjectMonthDetail.Visible = false; // ProjectDetail.Visible = false; // PanelApprove.Visible = false; } protected void btnApprove_Click1(object sender, EventArgs e) { LDepartment dept = new LDepartment( ); dept.Initialize(_logic.GetProject.pj_nextDept); if (ProjectDetail.Visible) //项目审核 { //判断项目是否已经完成审批,防止在对月度审批时对项目误操作 if (_logic.GetProject.pj_status.Equals(ProjectStatus.新增考核通过)|| _logic.GetProject.pj_status.Equals(ProjectStatus.删减考核通过)) { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经考核通过,不需要再审批,操作失败。');", true); return; } if (_logic.GetProject.pj_status.Equals(ProjectStatus.新增审核通过)|| _logic.GetProject.pj_status.Equals(ProjectStatus.删减审核通过)) { if (authType.Equals("100")) //预审、审核 {ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经审核通过,不可以再次审批,操作失败。');", true); return; } if (!lem.CanKaoHe) //考核 { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof (UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 已经审核通过,您要有考核的权利才能进行考核,操作失败。');", true); return; } } //更新项目状态 if (lem.CanKaoHe && authType.Equals("200") ) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增考核通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减考核通过; _logic.GetProject.balanceThePercent(); _logic.GetProject.pj_nextDept = -1; } else if (lem.CanShenHe) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增审核通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减审核通过; /* { _logic.GetProject.pj_master = -1; _logic.GetProject.pj_dept = -1; _logic.GetProject.pj_status = ProjectStatus.项目未分配; } */ _logic.GetProject.pj_nextDept = dept.GetDepartment.dep_mastdept; } else if (lem.CanYuShen) { if (_logic.GetProject.pj_status.StartsWith("新增")) _logic.GetProject.pj_status = ProjectStatus.新增预审通过; if (_logic.GetProject.pj_status.StartsWith("删减")) _logic.GetProject.pj_status = ProjectStatus.删减预审通过; _logic.GetProject.pj_nextDept = dept.GetDepartment.dep_mastdept; } _logic.PaObj.pa_id = _logic.GetProject.ID; } else { /* bool canNotApprove = _logic.GetProject.pj_status.Equals(ProjectStatus.项目冻结) || _logic.GetProject.pj_status.Equals(ProjectStatus.项目完成) || _logic.GetProject.pj_status.StartsWith("删减") || _logic.GetProject.pj_status.StartsWith("新增") && (! _logic.GetProject.pj_status.Equals(ProjectStatus.新增审核通过) || ! _logic.GetProject.pj_status.Equals(ProjectStatus.新增考核通过)); */ bool canNotApprove = _logic.GetProject.pj_status.Equals(ProjectStatus.项目冻结) || _logic.GetProject.pj_status.Equals(ProjectStatus.项目未分配); if(canNotApprove ) { ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", "alert('项目 " + _logic.GetProject.pj_name + " 不可以月度审批,操作失败。');", true); return; }   //更新项目明细状态 if (lem.CanKaoHe) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.考核通过; _logic.GetProject.pj_nextDept = -1; _logic.GetProject.pj_score = Convert.ToDecimal(txtSystemScore.Text); //单月项目。 // _logic.GetProject.pj_finishDate = DateTime.Now.ToShortDateString(); } else if (lem.CanShenHe) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.审核通过; _logic.GetProject.pj_nextDept = dept.GetDepartment.dep_mastdept; _logic.GetProject.pj_status = ProjectStatus.项目完成; // _logic.GetProject.pj_score = Convert.ToDecimal(txtSystemScore.Text); //单月项目。 _logic.GetProject.pj_finishDate = DateTime.Now.ToShortDateString(); _logic.GetProject.pj_score = _logic.GetProjectDetail.pd_percent; } else if (lem.CanYuShen) { _logic.GetProjectDetail.pd_status = ProjectDetailStatus.预审通过; _logic.GetProject.pj_nextDept = dept.GetDepartment.dep_mastdept; } _logic.PaObj.pa_id = _logic.GetProjectDetail.ID; // _logic.PaObj.pa_score = txtApproveScore.Text.Length>0 ? Convert.ToInt32(txtApproveScore.Text) : Convert.ToInt32(txtSystemScore.Text); _logic.PaObj.pa_score=Convert.ToDecimal(txtSystemScore.Text); } using (TransactionScope trans = new TransactionScope()) { try { if (!ProjectDetail.Visible) _logic.GetProjectDetail.Update(); //更新项目主体下一个审批部门 _logic.GetProject.Update(); //记录考核动作 _logic.PaObj.pa_dept = _logic.GetProject.pj_dept; _logic.PaObj.pa_emp = lem.GetEmployee.ID; _logic.PaObj.pa_isProj = ProjectDetail.Visible; _logic.PaObj.pa_mem = txtApproveMem.Text.Trim(); _logic.PaObj.pa_pass = true; _logic.PaObj.Add(); trans.Complete(); } catch (MyException) { throw; } catch (Exception) { throw new Exception("出现异常,项目审批失败。"); } } ApproveListBind(_logic.GetProject.ID); txtApproveMem.Text = ""; GridView1.SelectedIndex = -1; Databound();//重新绑定数据 // ProjectMonthDetail.Visible = false; // ProjectDetail.Visible = false; // PanelApprove.Visible = false; } public string FormatShowContent(bool pass) { if (pass) return "通过" + ""; return "未通过" + ""; ; } protected void TxtBtnYear_TextChanged(object sender, EventArgs e) { rdblstMonth.SelectedItem.Selected = false; rdblstMonth.Items[0].Selected = true; Databound(); } // 查看附件 protected void GVFiles_SelectedIndexChanged(object sender, EventArgs e) { LFile fileObj = new LFile(); if (GVFiles.DataKeys != null) { string id = GVFiles.DataKeys[GVFiles.SelectedIndex].Value.ToString(); fileObj.Initialize(int.Parse(id)); string fileName = fileObj.GetFilesmgr.file_dest; fileName = Server.UrlEncode("../upload/" + fileObj.GetFilesmgr.File_type + "/" + fileObj.GetFilesmgr.file_dest); fileName = "../upload/" + fileObj.GetFilesmgr.File_type + "/" + fileObj.GetFilesmgr.file_dest; string openFile = "window.open('" + fileName + "');"; ScriptManager.RegisterStartupScript(Master.UpdatePanelMaster, typeof(UpdatePanel), "alert", openFile, true); } } protected void Page_Init() { PostBackTrigger trigger = new PostBackTrigger(); trigger.ControlID = Button1.UniqueID; ((UpdatePanel)Master.FindControl("UpdatePanel1")).Triggers.Add(trigger); } public override void VerifyRenderingInServerForm(Control control) { } protected void Excel_Click(object sender, EventArgs e) { Master.ScriptMgr.RegisterPostBackControl(Button1); GridView1.AllowPaging = false; GridView1.Columns[GridView1.Columns.Count-1].Visible = false; Databound(); Export("application/ms-excel", "项目列表.xls"); GridView1.AllowPaging = false; GridView1.Columns[GridView1.Columns.Count - 1].Visible = true; Databound(); } private void Export(string FileType, string FileName) { Response.Charset = "GB2312"; Response.ContentEncoding = Encoding.UTF7; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; EnableViewState = false; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); GridView1.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); } }