2013-03-18 71 views
0

有人可以看看我的代碼嗎?此代碼完美工作,但我想刪除第一和第二列時,數據導出爲Excel。我嘗試GridView1.Columns[0].Visible = false;但它不工作。asp gridview export to excel hide column

,這裏是我的aspx

<%@ Page Title="VRQ" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="EmployeePage.aspx.cs" Inherits="EmployeePage"%> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 

    <script language="javascript" type="text/javascript"> 
function Button1_onclick() { 
//open new window set the height and width =0,set windows position at bottom 
var a = window.open ('','','left =' + screen.width + ',top=' + screen.height + ',width=0,height=0,toolbar=0,scrollbars=0,status=0'); 
//write gridview data into newly open window 
a.document.write(document.getElementById('innerdata').innerHTML); 
a.document.close(); 
a.focus(); 
//call print 
a.print(); 
a.close(); 
return false; 
} 
function OpenFile(KEYW) { 
    window.open("ResumePage.aspx?bid=" + KEYW, "ResumeContext"); 

}  
</script> 
     <asp:Button ID="btnbacksearch" runat="server" Text="Back to Search" 
     Width="127px" OnClick="btnbacksearch_Click" CssClass="plainbutton" /> 

     <asp:Button ID="btnExportToExcel" runat="server" OnClick="btnExportToExcel_Click" 
      Text="Export Results to Excel" Width="174px" CssClass ="plainbutton" /> 
     <asp:Button 
     ID="btnGenerateSF" runat="server" OnClick="btnGenerateSF_Click" 
      Text="Generate Resume" Width="137px" CssClass ="plainbutton" 
     Visible="False" /> 
     &nbsp; &nbsp; 
     <asp:DropDownList ID="ddStatus" runat="server" 
     onselectedindexchanged="ddStatus_SelectedIndexChanged" AutoPostBack="True" 
     Visible="False" Width="150px"> 
      <asp:ListItem Selected="True" Value="Active">Active Personnel</asp:ListItem> 
      <asp:ListItem Value="Inactive">Inactive Personnel</asp:ListItem> 
     </asp:DropDownList> 
     <div style="font-size: 11pt; font-family: Tahoma; text-align:center "><strong> 
       SEARCH SUMMARY</strong></div> 
     <div style="font-size: 10pt; font-family: Tahoma; text-align:center "> 
     <asp:Label ID="LabelCaption" runat="server" Text="Label"></asp:Label> 
     </div> 
<div id = "innerdata" style="size: landscape;" > 
    <asp:GridView ID="GridView1" runat="server" 
        CellPadding="4" DataSourceID="SqlDataSource1" 
        onrowcreated="GridView1_RowCreated" 
        AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging" 
          DataKeyNames="IDNo" AllowSorting="True" Width="100%" 
        PageSize="30" EmptyDataText="No Existing Records." CssClass="GridView" 
        onrowcommand="GridView1_RowCommand" 
     AutoGenerateColumns="False" 
     onsorted="GridView1_Sorted" > 

       <Columns> 


         <asp:TemplateField> 
         <ItemTemplate> 
          <asp:LinkButton runat ="server" ID="lnkSelect" Text="View" CommandName ="Select" CommandArgument='<%# Eval("IDNo") %>' ></asp:LinkButton> 
         </ItemTemplate> 
         <ItemStyle Width="20px" HorizontalAlign="Center" /> 
        </asp:TemplateField> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <asp:LinkButton runat ="server" ID="lnkPrintRep1" Text="Project Selection" CommandName ="PrintSF330" CommandArgument='<%# Eval("IDNo") %>' ></asp:LinkButton> 
         </ItemTemplate> 
         <ItemStyle Width="70px" HorizontalAlign="Center" /> 
        </asp:TemplateField> 
        <asp:BoundField DataField="fullname" HeaderText="Name" ReadOnly="True" 
         SortExpression="fullname" > 
         <ItemStyle Width="200px" /> 
         </asp:BoundField> 
        <asp:BoundField DataField="YearsExperience" HeaderText="Experience" 
         SortExpression="YearsExperience" > 
         <ItemStyle Width="50px" HorizontalAlign="Center" /> 
         </asp:BoundField> 
        <asp:BoundField DataField="Job" HeaderText="Position" SortExpression="Job" > 
         <ItemStyle Width="200px" /> 
         </asp:BoundField> 
         <asp:TemplateField HeaderText="Search Results" SortExpression ="SearchDetails"> 
         <ItemTemplate> 
          <%# HighlightText(Convert.ToString(Eval("SearchDetails"))) %>      </ItemTemplate> 
         <ItemStyle Width="300px" /> 
         </asp:TemplateField> 

       </Columns> 
        <RowStyle CssClass="GridRowStyle"/> 
        <PagerStyle HorizontalAlign="Center" /> 
        <SelectedRowStyle CssClass="GridSelected" /> 
        <HeaderStyle CssClass="GridHeader" Height="10px" /> 
        <PagerStyle CssClass="GridFooterStyle"/> 
      </asp:GridView></div> 

      <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:HRIS_ConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:HRIS_ConnectionString.ProviderName %>" 
    SelectCommand="select i.IDNo,concat(lastname,', ',firstname,' ',middlename) as fullname,e.tYrsExperience as YearsExperience,p.Description as Job,'' as SearchDetails FROM employeesinfo i inner join ecd e on e.empid=i.idno 
      left outer join Position p on p.idno = e.presentjob"> 
</asp:SqlDataSource> 
    <vt:MessageBox ID="MessageBox1" runat="server"></vt:MessageBox> 
</asp:Content> 

,這裏是我的aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Text.RegularExpressions; 
using System.IO; 
using System.Text; 

public partial class EmployeePage : System.Web.UI.Page 
{ 
    string sqry = ""; string scolumn = ""; 
    string origQry = String.Empty; 
    public string keyword = ""; 
    public string curAlpha = ""; 
    public int iCtr = 0; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["QRY_CONDITIONS"] == null) Response.Redirect("Default.aspx"); 

     scolumn = Session["QRY_DETAIL"].ToString(); 
     sqry = Session["QRY_CONDITIONS"].ToString(); 

     clsUser user = (clsUser)Session["CurrentUser"]; 
     if (user == null) return; 

     if (user.IsSuperAdmin && sqry == "ALL") 
     { 
      ddStatus.Visible = true; 
      sqry = string.Format(" where ifnull(i.activestatus,0) = {0}", ddStatus.SelectedIndex == 0 ? "1" : "0") ; 
     } 
     else if(sqry == "ALL") 
     { 
      ddStatus.Visible = false; 
      sqry = " where ifnull(i.activestatus,0) = 1 "; 
     } 

     origQry = sqry; 
     if (Request.QueryString["keyword"] != null) keyword = Request.QueryString["keyword"].ToString().TrimEnd().TrimStart(); 
     if (!IsPostBack) 
     { 
      if (keyword == "") 
      { 
       sqry = sqry + " and i.lastname like 'A%' "; 
       Session["QRY_alpha"] = " and i.lastname like 'A%' "; 
       curAlpha = "A"; 
      } 
      LoadStates(); 
      BindData(); 
     } 
    } 
    protected override void LoadViewState(object savedState) 
    { 
     base.LoadViewState(savedState); 
     curAlpha = (string)ViewState["curAlpha"]; 
    } 
    protected override object SaveViewState() 
    { 
     ViewState["curAlpha"] = curAlpha; 

     return base.SaveViewState(); 
    } 
    private void BindData() 
    { 
     modPublic myMod = new modPublic(); 

     SqlDataSource1.SelectCommand = "SELECT distinct i.idno,concat(i.lastname,', ',i.firstname,' ',i.middlename) as fullname,e.tYrsExperience as YearsExperience,e.Position as Job," + scolumn + " as SearchDetails FROM employeesinfo i left join ecd e on e.empid=i.idno " + 
      "left join position p on p.idno = e.presentjob left join firm_location loc on loc.idno = i.firmlocationid " + sqry + " order by i.lastname,i.firstname"; 
     SqlDataSource1.Select(new DataSourceSelectArguments()); 
     object o = myMod.ExecuteScalar("select count(distinct i.idno) as ctr FROM employeesinfo i left join ecd e on e.empid=i.idno " + 
      "left join position p on p.idno = e.presentjob left join firm_location loc on loc.idno = i.firmlocationid " + origQry + " "); 
     LabelCaption.Text = o.ToString() + " Record(s) found"; 
     if (keyword == "") 
     { 
      GridView1.AllowPaging = false; 
      GridView1.Columns[5].Visible = false; 
     } 
     else 
     { 
      GridView1.Columns[5].Visible = true; 
     } 
     GridView1.DataBind(); 
    } 
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     BindData(); 
     GridView1.PageIndex = e.NewPageIndex; 
    } 

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "AlphaPaging") 
     { 
      curAlpha = e.CommandArgument.ToString(); 
      sqry = sqry + " and i.lastname like '" + e.CommandArgument + "%'"; 
      Session["QRY_alpha"] = " and i.lastname like '" + e.CommandArgument + "%'"; 
      GridView1.AllowPaging = false; 
      BindData(); 
      SaveStates(); 
      //this.SqlDataSource1.SelectCommand = "Select * from [Table_1] WHERE theName LIKE '" + e.CommandArgument + "%'"; 
     } 
     if (e.CommandName == "PrintSF330") 
     { 
      SaveStates(); 
      Response.Redirect("~/ReportViewer.aspx?EmpID=" + e.CommandArgument.ToString() + " "); 
     } 
     else if (e.CommandName == "Select") 
     { 

       SaveStates(); 
       loadECD(e.CommandArgument.ToString()); 
     } 

    } 
    //protected override object SaveViewState() 
    //{ 
    // ViewState["alphacond"] = alphacond; 
    // return base.SaveViewState(); 
    //} 
    //protected override void LoadViewState(object savedState) 
    //{ 
    // if (Page.IsPostBack) 
    // { 
    //  base.LoadViewState(savedState); 
    //  alphacond = ViewState["alphacond"].ToString(); 
    // } 
    //} 
    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
    { 

     if (e.Row.RowIndex >= 0) 
     { 
      // e.Row.Attributes.Add("OnClick", "javascript:" + Page.GetPostBackClientEvent(GridView1, "Select$" + e.Row.RowIndex)); 
      e.Row.Attributes.Add("onmouseover", "this.style.cursor='pointer'"); 

     } 
     if (keyword == "") 
     { 

      if (e.Row.RowType == DataControlRowType.Footer) 
      { 

       GridViewRow grv = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal); 

       this.GridView1.Controls[0].Controls.Add(grv); 


       TableCell cell = new TableCell(); 
       grv.Cells.Add(cell); 

       if (keyword == "") 
        cell.ColumnSpan = 5; 
       else 
        cell.ColumnSpan = 6; 
       for (int i = 65; i <= (65 + 25); i++) 
       { 

        string s = Char.ConvertFromUtf32(i); 
        if (s == curAlpha) 
        { 
         Label lt = new Label(); 
         lt.Text = "[" + s + "]"; 
         lt.Font.Bold = true; 
         lt.Font.Size = new FontUnit(12); 
         lt.Style["text-align"] = "middle"; 


         cell.Controls.Add(lt); 

        } 
        else 
        { 
         LinkButton lb = new LinkButton(); 

         lb.Text = s + " "; 

         lb.CommandArgument = s; 

         lb.CommandName = "AlphaPaging"; 
         cell.Controls.Add(lb); 
        } 


       } 
      } 
     } 

    } 
    protected void btnExportToExcel_Click(object sender, EventArgs e) 
    { 
     GridView1.Columns[0].Visible = false; 
     GridView1.AllowPaging = false; 

     BindData(); 

     GridView1.DataBind(); 

     GridViewExportUtil.Export("ReportResultsPage.xls", this.GridView1); 

     GridView1.AllowPaging = true; 

     BindData(); 
     GridView1.Columns[0].Visible = false; 
    } 
    private void SaveStates() 
    { 
     if (Session["QRY_alpha"] == null) Session["QRY_alpha"] = ""; 

     sqry = Session["QRY_CONDITIONS"].ToString(); 
     origQry = Session["QRY_CONDITIONS"].ToString(); 
     clsUser user = (clsUser)Session["CurrentUser"]; 

     if (user.IsSuperAdmin && sqry == "ALL") 
     { 
      sqry = string.Format(" where ifnull(i.activestatus,0) = {0}", ddStatus.SelectedIndex == 0 ? "1" : "0") + Session["QRY_alpha"].ToString(); 
      origQry = string.Format(" where ifnull(i.activestatus,0) = {0}", ddStatus.SelectedIndex == 0 ? "1" : "0"); 
     } 
     else if (sqry == "ALL") 
     { 
      sqry = " where ifnull(i.activestatus,0) = 1 " + Session["QRY_alpha"].ToString(); 
      origQry = " where ifnull(i.activestatus,0) = 1 "; 
     } 
     else 
     { 
      sqry = Session["QRY_CONDITIONS"].ToString() + Session["QRY_alpha"].ToString(); 
      origQry = Session["QRY_CONDITIONS"].ToString(); 
     } 

     string tmp = ""; 
     tmp = sqry + "|" + 
       scolumn + "|" + 
       keyword + "|" + 
       GridView1.SelectedIndex.ToString() + "|" + 
       GridView1.PageIndex.ToString() + "|" + 
       ddStatus.SelectedIndex.ToString() + "|" + 
       curAlpha + "|" + 
       origQry; 

     Session["PrevState"] = tmp; 
    } 
    public void LoadStates() 
    { 

     string tmp = (string)Session["PrevState"]; 
     if (tmp == null) 
     { 
      return; 
     } 
     string[] arr = tmp.Split(new char[] { '|' }); 
     sqry = arr[0]; 
     scolumn = arr[1]; 
     keyword = arr[2]; 
     GridView1.SelectedIndex = Convert.ToInt32(arr[3]); 
     GridView1.PageIndex = Convert.ToInt32(arr[4]); 
     ddStatus.SelectedIndex = Convert.ToInt32(arr[5]); 
     curAlpha = arr[6]; 
     origQry = arr[7]; 
    } 
    void loadECD(string _idno) 
    { 
     SaveStates(); 
     Response.Redirect("~/ECDMain.aspx?i=" + _idno); 
    } 
    protected void btnbacksearch_Click(object sender, EventArgs e) 
    { 

     Response.Redirect("~/Default.aspx"); 
    } 
    protected void btnGenerateSF_Click(object sender, EventArgs e) 
    { 
     SaveStates(); 
     Response.Redirect("~/ReportViewer.aspx?EmpID=ALL&EmpIDs=" + GetEmpID()); 
    } 
    private string GetEmpID() 
    { 
     string temp = ""; string empIDs = ""; 
     foreach (GridViewRow gRow in GridView1.Rows) 
     { 
      temp = GridView1.DataKeys[gRow.RowIndex].Value.ToString(); 
      empIDs = (empIDs == "" ? empIDs : empIDs + ",") + temp; 

     } 
     return "(" + empIDs + ")"; 
    } 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow && keyword !="") 
      e.Row.Cells[5].Text = e.Row.Cells[5].ToString().Replace(keyword,"<span style=//background-color: #FFFF00;//>" + keyword + "</span>"); 
    } 
    public string HighlightText(string InputTxt) 
    { 
    // This function is called whenever text is displayed in the FirstName and LastName 
    // fields from our database. If we're not searching then just return the original 
     // input, this speeds things up a bit 
     if (string.IsNullOrEmpty(keyword)) 
     { 
      return InputTxt; 
     } 
     else 
     { 
      // Otherwise create a new regular expression and evaluate the FirstName and 
      // LastName fields against our search string. 
      Regex ResultStr = default(Regex); 
      ResultStr = new Regex(keyword.Replace(" ", "|"), RegexOptions.IgnoreCase); 
      return ResultStr.Replace(InputTxt, new MatchEvaluator(ReplaceWords)); 
     } 
    } 
    public string ReplaceWords(Match m) 
    { 
     // This match evaluator returns the found string and adds it a CSS class I defined 
     // as 'highlight' 
     return "<span class=highlight>" + m.ToString() + "</span>"; 
    } 

    //protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e) 
    //{ 

    // if ((e.Row.RowType == DataControlRowType.DataRow)) 
    // { 
    //  //adding an attribut for onclick event on the check box in the hearder and passing the ClientID of the Select All checkbox 
    //  ((LinkButton)e.Row.FindControl("lnkResume")).Attributes.Add("onclick", "javascript:OpenFile('" + GridView1.DataKeys[e.Row.RowIndex].Value + "-" + keyword + "')"); 
    // } 
    //} 

    protected void btnGenWord_Click(object sender, EventArgs e) 
    { 
     GridView1.AllowPaging = false; 
     GridViewExportUtil.ExportWord("ReportResultsPage.doc", this.GridView1); 
     GridView1.AllowPaging = true; 
    } 
    protected void GridView1_Sorted(object sender, EventArgs e) 
    { 
     BindData(); 
    } 
    protected void ddStatus_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     sqry = sqry + " and i.lastname like '" + curAlpha + "%'"; 
     BindData(); 
    } 
} 

請有人可以幫助我。在此先感謝

+0

好的我得到了答案我用'GridView1.Columns.RemoveAt(0);'而不是'GridView1.Columns [0] .Visible = false;'' – 2013-03-18 17:57:32

回答

1

您需要使用RemoveAt移除()後重新綁定gridview的

GridView1.Columns.RemoveAt(0); 
GridView1.DataBind(); 
0

當導出用戶點擊到Excel您可以禁用刪除按鈕,將其導出並重新啓用一次出口

GridView1.AutoGenerateDeleteButton = false; 
    GridView1.DataBind(); 
    GridView1.RenderControl(htmlWrite); 
    Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");