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