C# 使用分页在按钮单击事件上绑定GridView

C# 使用分页在按钮单击事件上绑定GridView,c#,asp.net,gridview,binding,event-handling,C#,Asp.net,Gridview,Binding,Event Handling,我是asp.net新手,需要一些帮助。我有一个gridview,每页有20条记录,在gridview外有一个搜索按钮。我需要做的是,当我单击搜索按钮时,结果必须绑定到gridview(现在正在发生),但是当记录超过pagesize并且我需要转到网格的下一页时,绑定将丢失,绑定的记录将形成PageOn load事件。下面是我的代码示例 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack)

我是asp.net新手,需要一些帮助。我有一个gridview,每页有20条记录,在gridview外有一个搜索按钮。我需要做的是,当我单击搜索按钮时,结果必须绑定到gridview(现在正在发生),但是当记录超过pagesize并且我需要转到网格的下一页时,绑定将丢失,绑定的记录将形成PageOn load事件。下面是我的代码示例

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

public void BindData()
{

    {
        List<EventFile> eventFile = new List<EventFile>();
        eventFile = CoMailAssociationDAL.GetUploadFileUnAssigned(0, "", "", "U");
        if (gvwAssociation.DataSource == null)
        {
            gvwAssociation.DataSource = eventFile;
            gvwAssociation.DataBind();
        }
    }
}
 protected void btnSearch_Click(object sender, EventArgs e)
{
    int uFlag = 0;
    string uploadFlag = this.ddlUploadDate.SelectedValue;
    string fileName = this.txtSearchText.Text;
    string uploadDt = this.txtDate.Text;
    string status = this.ddlStatus.SelectedValue.ToString();
    bt = true;


    if (status == "Un-Assigned")
    {
        status = "U";
    }
    else if (status == "Assigned")
    {
        status = "A";
    }
    else
    {
        status = "B";
    }


    if ((uploadFlag == "On") && (uploadDt == ""))
    {
        uFlag = 0;
    }
    else if (uploadFlag == "On")
    {
        uFlag = 1;
    }
    else if (uploadFlag == "OnorBefore")
    {
        uFlag = 2;
    }
    else
    {
        uFlag = 3;
    }


    fileSearch = CoMailAssociationDAL.SearchFile(uFlag, fileName, uploadDt, status);

    gvwAssociation.DataSource = fileSearch;
    gvwAssociation.DataBind();
}

 protected void gvwAssociation_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    //SaveSelectedValues();
    gvwAssociation.PageIndex = e.NewPageIndex;
    //BindData();
    //PopulateSelectedValues();
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
BindData();
}
}
公共数据()
{
{
List eventFile=new List();
eventFile=CoMailAssociationDAL.GetUploadFileUnAssigned(0,“,”,“U”);
if(gvwAssociation.DataSource==null)
{
gvwAssociation.DataSource=eventFile;
gvwAssociation.DataBind();
}
}
}
受保护的无效BTN搜索单击(对象发送者,事件参数e)
{
int-uFlag=0;
string uploadFlag=this.ddlUploadDate.SelectedValue;
字符串文件名=this.txtSearchText.Text;
字符串uploadDt=this.txtDate.Text;
字符串状态=this.ddlStatus.SelectedValue.ToString();
bt=真;
如果(状态=“未分配”)
{
status=“U”;
}
否则如果(状态==“已分配”)
{
status=“A”;
}
其他的
{
status=“B”;
}
如果((uploadFlag==“On”)&&(uploadDt==“On”)
{
uFlag=0;
}
else if(uploadFlag==“On”)
{
uFlag=1;
}
else if(uploadFlag==“OnorBefore”)
{
uFlag=2;
}
其他的
{
uFlag=3;
}
fileSearch=comailsociationdal.SearchFile(uFlag,文件名,uploadDt,状态);
gvwAssociation.DataSource=fileSearch;
gvwAssociation.DataBind();
}
受保护的void gvwAssociation_PageIndexchange(对象发送方,GridViewPageEventArgs e)
{
//SaveSelectedValues();
gvwAssociation.PageIndex=e.NewPageIndex;
//BindData();
//PopulateSelectedValues();
}

首先,您应该使用以下事件处理程序进行分页

protected void gvwAssociation_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvwAssociation.PageIndex = e.NewPageIndex;
    bindGridWithFilter();
}
然后,将搜索按钮中的搜索/筛选逻辑移动到私有方法(例如“bindGridWithFilter”)

提示:尝试组合BindData和bindGridWithFilter,以便在没有筛选器时显示所有记录


更新

下面是一些重构代码,让您了解我上面的意思

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

        protected void gvwAssociation_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwAssociation.PageIndex = e.NewPageIndex;
            bindGridWithFilter();
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            bindGridWithFilter();

        }

        private void bindGridWithFilter()
        {
            List<EventFile> eventFile = new List<EventFile>();
            eventFile = CoMailAssociationDAL.GetUploadFileUnAssigned(0, "", "", "U");
            if (gvwAssociation.DataSource == null) 
            {
                // If you don't have a filter you show all records
                gvwAssociation.DataSource = eventFile;
                gvwAssociation.DataBind();
            }
            else
            {
                // This is same as the logic in your search button
                // display only the filtered records
                int uFlag = 0;
                string uploadFlag = this.ddlUploadDate.SelectedValue;
                string fileName = this.txtSearchText.Text;
                string uploadDt = this.txtDate.Text;
                string status = this.ddlStatus.SelectedValue.ToString();
                bt = true;


                if (status == "Un-Assigned")
                {
                    status = "U";
                }
                else if (status == "Assigned")
                {
                    status = "A";
                }
                else
                {
                    status = "B";
                }


                if ((uploadFlag == "On") && (uploadDt == ""))
                {
                    uFlag = 0;
                }
                else if (uploadFlag == "On")
                {
                    uFlag = 1;
                }
                else if (uploadFlag == "OnorBefore")
                {
                    uFlag = 2;
                }
                else
                {
                    uFlag = 3;
                }


                List<EventFile> fileSearch = CoMailAssociationDAL.SearchFile(uFlag, fileName, uploadDt, status);

                gvwAssociation.DataSource = fileSearch;
                gvwAssociation.DataBind();
            }
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
bindGridWithFilter();
}
}
受保护的void gvwAssociation_PageIndexchange(对象发送方,GridViewPageEventArgs e)
{
gvwAssociation.PageIndex=e.NewPageIndex;
bindGridWithFilter();
}
受保护的无效BTN搜索单击(对象发送者,事件参数e)
{
bindGridWithFilter();
}
私有void bindGridWithFilter()
{
List eventFile=new List();
eventFile=CoMailAssociationDAL.GetUploadFileUnAssigned(0,“,”,“U”);
if(gvwAssociation.DataSource==null)
{
//如果没有筛选器,则显示所有记录
gvwAssociation.DataSource=eventFile;
gvwAssociation.DataBind();
}
其他的
{
//这与搜索按钮中的逻辑相同
//仅显示筛选的记录
int-uFlag=0;
string uploadFlag=this.ddlUploadDate.SelectedValue;
字符串文件名=this.txtSearchText.Text;
字符串uploadDt=this.txtDate.Text;
字符串状态=this.ddlStatus.SelectedValue.ToString();
bt=真;
如果(状态=“未分配”)
{
status=“U”;
}
否则如果(状态==“已分配”)
{
status=“A”;
}
其他的
{
status=“B”;
}
如果((uploadFlag==“On”)&&(uploadDt==“On”)
{
uFlag=0;
}
else if(uploadFlag==“On”)
{
uFlag=1;
}
else if(uploadFlag==“OnorBefore”)
{
uFlag=2;
}
其他的
{
uFlag=3;
}
List fileSearch=comailsociationdal.SearchFile(uFlag、文件名、上传、状态);
gvwAssociation.DataSource=fileSearch;
gvwAssociation.DataBind();
}
}

这应该是可行的。

首先,您应该有以下用于分页的事件处理程序

protected void gvwAssociation_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    gvwAssociation.PageIndex = e.NewPageIndex;
    bindGridWithFilter();
}
然后,将搜索按钮中的搜索/筛选逻辑移动到私有方法(例如“bindGridWithFilter”)

提示:尝试组合BindData和bindGridWithFilter,以便在没有筛选器时显示所有记录


更新

下面是一些重构代码,让您了解我上面的意思

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

        protected void gvwAssociation_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwAssociation.PageIndex = e.NewPageIndex;
            bindGridWithFilter();
        }

        protected void btnSearch_Click(object sender, EventArgs e)
        {
            bindGridWithFilter();

        }

        private void bindGridWithFilter()
        {
            List<EventFile> eventFile = new List<EventFile>();
            eventFile = CoMailAssociationDAL.GetUploadFileUnAssigned(0, "", "", "U");
            if (gvwAssociation.DataSource == null) 
            {
                // If you don't have a filter you show all records
                gvwAssociation.DataSource = eventFile;
                gvwAssociation.DataBind();
            }
            else
            {
                // This is same as the logic in your search button
                // display only the filtered records
                int uFlag = 0;
                string uploadFlag = this.ddlUploadDate.SelectedValue;
                string fileName = this.txtSearchText.Text;
                string uploadDt = this.txtDate.Text;
                string status = this.ddlStatus.SelectedValue.ToString();
                bt = true;


                if (status == "Un-Assigned")
                {
                    status = "U";
                }
                else if (status == "Assigned")
                {
                    status = "A";
                }
                else
                {
                    status = "B";
                }


                if ((uploadFlag == "On") && (uploadDt == ""))
                {
                    uFlag = 0;
                }
                else if (uploadFlag == "On")
                {
                    uFlag = 1;
                }
                else if (uploadFlag == "OnorBefore")
                {
                    uFlag = 2;
                }
                else
                {
                    uFlag = 3;
                }


                List<EventFile> fileSearch = CoMailAssociationDAL.SearchFile(uFlag, fileName, uploadDt, status);

                gvwAssociation.DataSource = fileSearch;
                gvwAssociation.DataBind();
            }
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
bindGridWithFilter();
}
}
受保护的void gvwAssociation_PageIndexchange(对象发送方,GridViewPageEventArgs e)
{
gvwAssociation.PageIndex=e.NewPageIndex;
bindGridWithFilter();
}
受保护的无效BTN搜索单击(对象发送者,事件参数e)
{
bindGridWithFilter();
}
私有void bindGridWithFilter()
{
List eventFile=new List();
eventFile=CoMailAssociationDAL.GetUploadFileUnAssi