C# 绑定、排序和;从类中分页GridView
我正在制作一个类,将我的C# 绑定、排序和;从类中分页GridView,c#,asp.net,sorting,gridview,C#,Asp.net,Sorting,Gridview,我正在制作一个类,将我的GridView数据绑定到C#中 我已经让我的寻呼机工作,但不知道我将如何进行我的分类工作。。。 到目前为止,我的代码如下所示: public static class Binder { public class gridView { public static void Bind(GridView grid, IList source, bool pager, bool sorting) { grid.DataSource = source;
GridView
数据绑定到C#中
我已经让我的寻呼机工作,但不知道我将如何进行我的分类工作。。。
到目前为止,我的代码如下所示:
public static class Binder
{
public class gridView {
public static void Bind(GridView grid, IList source, bool pager, bool sorting) {
grid.DataSource = source;
if (pager) {
grid.PageIndexChanging += new GridViewPageEventHandler(PageIndexChanging);
}
if (sorting) {
grid.Sorting += new GridViewSortEventHandler(Sorting);
}
grid.DataBind();
}
public static void PageIndexChanging(object sender, GridViewPageEventArgs e) {
if (sender != null) {
GridView GridView1 = sender as GridView;
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}
}
public static void Sorting(object sender, GridViewSortEventArgs e) {
if (sender != null) {
GridView GridView1 = sender as GridView;
//What to do?
GridView1.DataBind();
}
}
}
}
我会像这样绑定一个gridview:Binder.gridview.bind(MyGridView,MyDataSource,true,true)代码>
但是我有点不知道如何使排序工作?您需要在您的aspx中启用排序-AllowSorting=“True”
对于IList,可以使用OrderBy函数
IList<T> tmp = new IList<T>();
tmp.OrderByDescending...
tmp.OrderBy...
IList tmp=new IList();
tmp.OrderByDescending。。。
tmp.OrderBy。。。
此代码用于绑定、分页和排序
protected void RadgvData_SortCommand(object sender, GridSortCommandEventArgs e)
{
GridTableView tableView = e.Item.OwnerTableView;
e.Canceled = true;
GridSortExpression expression = new GridSortExpression();
expression.FieldName = e.SortExpression;
if (tableView.SortExpressions.Count == 0 || tableView.SortExpressions[0].FieldName != e.SortExpression)
{
expression.SortOrder = GridSortOrder.Descending;
}
else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Descending)
{
expression.SortOrder = GridSortOrder.Ascending;
}
else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending)
{
expression.SortOrder = GridSortOrder.Descending;
}
tableView.SortExpressions.AddSortExpression(expression);
RadgvData.Rebind();
}
protected void RadgvData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
try
{
DataTable dtData = objCutTypeBAL.getCutTypeDetail(string.Empty);
if (dtData.Rows.Count > 0)
{
RadgvData.DataSource = dtData;
}
else
{
RadgvData.DataSource = String.Empty;
}
}
catch (Exception ex)
{
throw ex;
}
}
protected void RadgvData_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridPagerItem)
{
RadgvData.PagerStyle.AlwaysVisible = true;
}
if (e.Item is GridDataItem && e.Item.OwnerTableView.DataMember != "ChildCutType")
{
GridDataItem dataitem = (GridDataItem)e.Item;
ImageButton imgDel = (ImageButton)dataitem["Delete"].Controls[0];
string strCutType;
strCutType = dataitem.GetDataKeyValue("CutType").ToString();
DataTable dtData = objCutTypeBAL.getCutTypeDetail(strCutType);
if (dtData.Rows.Count > 0)
{
imgDel.Visible = false;
}
}
}
protected void RadgvData_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
RadgvData.CurrentPageIndex = e.NewPageIndex;
popGrid();
}
你为什么要这么费解?只是好奇,只是觉得这是个好办法?但任何建议都是受欢迎的:)基本上,您需要对数据源进行排序并重新绑定。这可能会向您指出您的解决方案:但后来的想法是在内部设置Repeater类。。这样我就可以调用Binder.Repeater.Bind();很明显:)但这是在我需要帮助的地方进行排序的代码。OrderBy返回一个可枚举列表,然后我得到一个错误,我不支持服务器端分页。。。
protected void RadgvData_SortCommand(object sender, GridSortCommandEventArgs e)
{
GridTableView tableView = e.Item.OwnerTableView;
e.Canceled = true;
GridSortExpression expression = new GridSortExpression();
expression.FieldName = e.SortExpression;
if (tableView.SortExpressions.Count == 0 || tableView.SortExpressions[0].FieldName != e.SortExpression)
{
expression.SortOrder = GridSortOrder.Descending;
}
else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Descending)
{
expression.SortOrder = GridSortOrder.Ascending;
}
else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending)
{
expression.SortOrder = GridSortOrder.Descending;
}
tableView.SortExpressions.AddSortExpression(expression);
RadgvData.Rebind();
}
protected void RadgvData_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
try
{
DataTable dtData = objCutTypeBAL.getCutTypeDetail(string.Empty);
if (dtData.Rows.Count > 0)
{
RadgvData.DataSource = dtData;
}
else
{
RadgvData.DataSource = String.Empty;
}
}
catch (Exception ex)
{
throw ex;
}
}
protected void RadgvData_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridPagerItem)
{
RadgvData.PagerStyle.AlwaysVisible = true;
}
if (e.Item is GridDataItem && e.Item.OwnerTableView.DataMember != "ChildCutType")
{
GridDataItem dataitem = (GridDataItem)e.Item;
ImageButton imgDel = (ImageButton)dataitem["Delete"].Controls[0];
string strCutType;
strCutType = dataitem.GetDataKeyValue("CutType").ToString();
DataTable dtData = objCutTypeBAL.getCutTypeDetail(strCutType);
if (dtData.Rows.Count > 0)
{
imgDel.Visible = false;
}
}
}
protected void RadgvData_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
RadgvData.CurrentPageIndex = e.NewPageIndex;
popGrid();
}