gridview分页中控制控件显示隐藏的有关问题

gridview分页中控制控件显示隐藏的问题
用gridview做的一个下载列表,其中一列是linkbutton控件,需要根据条件判断是否显示。在不分页的情况下都好;在分页后,首次进入页面正常,但点下一页后,不管在转到哪一页,linkbutton的显示隐藏不受控制了,始终为默认属性了。这该怎么解决?

前台:
HTML code

        <table width=100 align=center border="0" cellpadding="0" cellspacing="0" bgcolor="#EBFEFE">
           <tr>
           <td width=100% colspan="2">
               <asp:GridView ID="FileView" SkinID=FileList runat="server" Width="600px" 
                             AllowPaging="True" ShowFooter="false" PageSize=2 >
                    <PagerSettings Visible="False" />
                    <Columns>
                        <asp:TemplateField HeaderText="附件列表">
                            <ItemTemplate>
                                &nbsp;&nbsp;&nbsp;&nbsp;<%# DataBinder.Eval(Container.DataItem,"FILENAME")%>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Left" Width="90%" />
                            <HeaderStyle Font-Bold="True" Font-Size="10pt" Height="28px" HorizontalAlign="Left" />
                        </asp:TemplateField>
                        <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>
                                <asp:HyperLink ID="HyperLink_Down" runat="server" Visible=false NavigateUrl='<%# "Down.aspx?FileID=" + DataBinder.Eval(Container.DataItem,"FILEID")%>'>
                            下载
                                </asp:HyperLink>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Left" Width="10%" />
                        </asp:TemplateField>
                    </Columns>                       
               </asp:GridView>
             </td>
             </tr>
            <tr>        
                <td align="center" height="28" valign=middle>
                    <asp:LinkButton ID="lnkbtnFirst" runat="server" OnClick="lnkbtnFirst_Click">首页</asp:LinkButton>&nbsp;&nbsp; 
                    <asp:LinkButton ID="lnkbtnPrev" runat="server" OnClick="lnkbtnPrev_Click">上一页</asp:LinkButton>&nbsp;&nbsp; 
                    <asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="lnkbtnNext_Click">下一页</asp:LinkButton>&nbsp;&nbsp; 
                    <asp:LinkButton ID="lnkbtnLast" runat="server" OnClick="lnkbtnLast_Click">尾页</asp:LinkButton>&nbsp;&nbsp;&nbsp;&nbsp;
                    <asp:Label ID="lbCurrentPage" runat="server"></asp:Label>&nbsp;&nbsp; 
                    <asp:Label ID="lbPageCount" runat="server"></asp:Label>&nbsp;&nbsp; 
                    <asp:Label ID="lbTaskCount" runat="server"></asp:Label>
                    &nbsp;&nbsp;&nbsp;&nbsp;跳转到第
                    <asp:DropDownList ID="ddlCurrentPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="SelectedIndexChanged"> 
                    </asp:DropDownList>
                    页
                </td>
            </tr>
             
          </table>




后台:
C# code

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DataBind_File();
        }

        DB.strSql = "………………";
        InfoTable = DB.GetDataTable();
        this.FileView.DataSource = InfoTable.DefaultView;
        
        //*****************************************************************************
        //根据用户和任务判断是否可下载
        for (int i = 0; i < this.FileView.Rows.Count; i++)
        {
            HyperLink linkDown = (HyperLink)FileView.Rows[i].FindControl("HyperLink_Down");
            if (InfoTable.Rows[0]["CURSTEP"].ToString() == "42")
            {
                linkDown.Visible = true;
            }
        }
    }

    private void DataBind_File()
    {
        DB.strSql = "……………………";
        InfoTable = DB.GetDataTable();

        this.FileView.DataSource = InfoTable.DefaultView;
        this.FileView.DataBind();

        lbCurrentPage.Text = "第" + (FileView.PageIndex + 1).ToString() + "页";
        lbPageCount.Text = "共" + FileView.PageCount.ToString() + "页";
        lbTaskCount.Text = "总共" + InfoTable.Rows.Count.ToString() + "项";
        if (InfoTable.Rows.Count == 0)
        {
            lnkbtnFirst.Visible = false;
            lnkbtnPrev.Visible = false;
            lnkbtnNext.Visible = false;
            lnkbtnLast.Visible = false;

            lbCurrentPage.Visible = false;
            lbPageCount.Visible = false;
        }
        else if (FileView.PageCount == 1)
        {
            lnkbtnFirst.Visible = false;
            lnkbtnPrev.Visible = false;
            lnkbtnNext.Visible = false;
            lnkbtnLast.Visible = false;
        }

        this.ddlCurrentPage.Items.Clear();
        for (int i = 1; i <= this.FileView.PageCount; i++)
        {
            this.ddlCurrentPage.Items.Add(i.ToString());
        }
        this.ddlCurrentPage.SelectedIndex = this.FileView.PageIndex;

    }

    protected void SelectedIndexChanged(object sender, EventArgs e)
    {
        this.FileView.PageIndex = this.ddlCurrentPage.SelectedIndex;
        DataBind_File();
    }
    protected void lnkbtnFirst_Click(object sender, EventArgs e)
    {
        this.FileView.PageIndex = 0;
        DataBind_File();
    }
    protected void lnkbtnPrev_Click(object sender, EventArgs e)
    {
        if (this.FileView.PageIndex > 0)
        {
            this.FileView.PageIndex = this.FileView.PageIndex - 1;
            DataBind_File();
        }
    }
    protected void lnkbtnNext_Click(object sender, EventArgs e)
    {
        if (this.FileView.PageIndex < this.FileView.PageCount)
        {
            this.FileView.PageIndex = this.FileView.PageIndex + 1;
            DataBind_File();
        }
    }
    protected void lnkbtnLast_Click(object sender, EventArgs e)
    {
        this.FileView.PageIndex = this.FileView.PageCount;
        DataBind_File();
    }