LinQ 高手请进

YuLongJiuTian 2012-05-25 02:55:54
用户上传Execl到服务器上,读取Execl表格中的数据保存在内存中(DataTable),数据绑定到GridView上面的同时还要进行分页

1、XPager -分页控件
2、XGridView
3、int count = 0;-数据总条数

将DataTable中的数据绑定在 XGridView 中,每页显示的数据是根据分页控件的 xpar.PageIndex 起始,与 xpar.PageSize 每页显示的条数决定的,还需要得到数据的总条数赋值给分页控件。
使用LinQ 如何实现请帮小弟写出源码(请写完源码,小弟对LinQ一窍不通)

xgvRealtionList.DataSource = ;数据源
xgvRealtionList.DataBind();
xpar.PageCount = Count;


...全文
248 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看到要源码的就……
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
你这个结贴好不地道。。。。
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
那就想办法把Excel中取出的数据再找地方存一下。
或者把删除的事件调用在保存以后。

竟然不能连续3条以上一个人的回复。。。
对了
你一个帖子说的是左链接树的问题。
那个用LinQ应该能帮助你解决
一条SQL语句直接把所有的数据都查出来,再程序里用LinQ用递归根据父ID遍历出整个树。不管你有多少级。
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
谢谢你了 大哥
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
.......
嗯嗯,没问题就好。
动手能力决定生产力的强弱
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
找到问题分享一下吧。
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
编辑跟取消编辑的事件写的没问题。
看看这个例子
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.gridview.rowediting.aspx
或许对你会有些帮助
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
xsldata();
哦我想到关键所在了 大哥 这个方法是用户上传Execl表格到服务器上 我读取到数据存到DataTable中后会把文件Execl删掉
那么在编辑事件中再次调用的时候xsldata()的时候是获取不到Execl中的数据
所以编辑事件发生时才会为空
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
//分页控件绑定
protected void xpgr_PageIndexChanged(object sender, CommonControl.WebUI.XPageIndexChangeArg e)
{
xsldata();
}

protected void xpgr_PageSizeChanged(object sender, CommonControl.WebUI.XPageSizeChangeArg e)
{
xsldata();
}

//编辑
protected void xgvRealtionList_RowEditing(object sender, GridViewEditEventArgs e)
{
xgvRealtionList.EditIndex = e.NewEditIndex;
xsldata();
}
//取消编辑
protected void xgvRealtionList_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
xgvRealtionList.EditIndex = -1;
xsldata();
}
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
求GridView内的绑定代码。
以及Edit触发后的事件。
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
if(!IsPostBack) 有加

xgvRealtionList.DataSource = list.Skip(xpar.PageIndex).Take(xpar.PageSize);
xgvRealtionList.DataBind();
xpar.PageCount = list.count;

界面显示1-10条数据 总条数=0
在点击Edit时 需要点击2次才会显示出一行里的文本框,数据被清空,点击取消后一行的数据就全没有了
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
list.count,是总记录数量。

同一行里文本框数据被情况是不是
Page_Load里没有加 if(!IsPostBack){//要执行的加载操作}的情况?

分页控件没有显示应该是分页控件里的数据没有绑定全吧。
需要绑定总数量,跟当前页数。
总数量是list.count

当前页数是不是还需要从查询字符串里面去获取?
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
大哥 按照你的办法数据是出来了 也是我想要的结果 就是总条数没有计算出来,而且在点击编辑按钮的同时一行里面文本框数据全被清空了,分页控件也没有实现
List<RelationshipEntity> list = DataTableTransformationList(dt);
xgvRealtionList.DataSource = list.Skip(xpar.PageIndex).Take(xpar.PageSize);
xgvRealtionList.DataBind();
xpar.PageCount = ;
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
不好意思。LinQ研究不是很深入,而且用的不是很多。学习了。
谢谢了


[Quote=引用 7 楼 的回复:]

呵呵,2楼误导了

linq可以对datatable操作,其名叫“linq2dataset”

至于分页用aspnetPager就成。aspnetPager可以自动计算 页面起始索引

所以

datatable.AsEnumerable().skip(aspnetpager计算出的起点索引-1).take(aspnetpager的pagesize)

就成
[/Quote]
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
如果只是界面风格的统一的话,还好说。可以直接把gridView生成的html样式弄出来嘛。

不过这个跟风格好像没关系,调用保存的方法,不要用GridView自己带的,自己写一个更新的方法。
就能把自己写的实体类T保存起来了。
如果还需要将List<T>转成DataTable的话,那就需要再处理这个转换了。

GridView在项目里用到的不多,记得有个Edit模板视图,在这个Edit模板提交修改的时候,这个提交事件自己完成。
将修改后的数据存入到你的实体类里,再向数据库写如这些修改后的内容(如果你是需要将这些内容存入到数据库的情况下)。

具体细节可能需要你自己写了。因为我这没有GridView的参考代码。。。
wanghui0380 2012-05-25
  • 打赏
  • 举报
回复
呵呵,2楼误导了

linq可以对datatable操作,其名叫“linq2dataset”

至于分页用aspnetPager就成。aspnetPager可以自动计算 页面起始索引

所以

datatable.AsEnumerable().skip(aspnetpager计算出的起点索引-1).take(aspnetpager的pagesize)

就成
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
要是可以自己写就好了 公司规定界面风格的统一
我只能套用写好的样式与控件往里面去填充数据
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
这样的话。。就自己实现编辑跟更新的功能嘛,更新一条记录的方法没有太麻烦。
太过以来.net给的这些东西,会让人变懒的,而且实际使用又不能做到很灵活。虽然有些是真的很好用。。。。
不过要是非要用LinQ在内存里实现这种分页的话,DataTable是不行的。。。咬咬牙写点,就过去了。
YuLongJiuTian 2012-05-25
  • 打赏
  • 举报
回复
数据要先绑定在XGridView 进行编辑,更新操作, 等待用户确定没有错误后在插入到数据库中取的 不然我也不必这么麻烦了
山大克罗斯 2012-05-25
  • 打赏
  • 举报
回复
这个样子操作,如果你的DataTable里的数据较多的话,可能会对性能产生影响。
最好还是讲DataTable里的数据存入到数据库中,按实际需要只获得当前需要的记录。
加载更多回复(1)

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧