DataList与 DataSet数据源以及绑定问题,急求。。。
有一张表AreaInfo[]areaInfo=。。。(此处查处表中所有数据:城区名称)再从另一张表hospital(医院)中查出属于该城区内的医院个数(intH_coun...
有一张表AreaInfo[] areaInfo = 。。。(此处查处表中所有数据:城区名称)
再从另一张表hospital(医院)中查出属于该城区内的医院个数(int H_count)以及人数(int P_count),然后用想要这样的效果:
名次(从小到大) 城区名称 医院个数(按个数降序排列) 人数
1 A 20 50
2 B 19 56
3 C 15 150
查询数据的方法不用介绍,我可以查出来。请问我要怎样实现这样的效果,用什么控件,谁给谁赋值,说个方法,请教高手!!!
贴点儿源码:
AreaInfo[] areaInfo = ...(此处省略方法)...GetObjects();
if (areaInfo != null && areaInfo.Length > 0)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
dt.Columns.Add("名次", typeof(Int32));
dt.Columns.Add("城区名称");
dt.Columns.Add("医院个数", typeof(Int32));
dt.Columns.Add("人数");
for (int i = 0; i < areaInfo.Length; i++)
{
// 查出属于A城区的医院个数
int H_Count =...方法省略...GetCount(...hospital.ares==areaInfo[i].Name);
int P_Count = =...方法省略....GetCount(...hospital.ares=areaInfo[i].Name );
DataRow dtRow = dt.NewRow();
dtRow["名次"] = i + 1; //这一句应该不要,排名最后要排序
dtRow["城区名称"] = areaInfo[i].Name;
dtRow["医院个数"] = H_Count;
dtRow["人数"] = P_Count;
dt.Rows.Add(dtRow);
}
DataView dv = dt.DefaultView; // 据说这是排序,但我没发现
dv.Sort = "医院个数 asc";
dt = dv.ToTable();
datalistTJ.DataSource = ds; //.Tables["dt"]; //datalist控件 换个能用的也行
datalistTJ.DataBind(); } 展开
再从另一张表hospital(医院)中查出属于该城区内的医院个数(int H_count)以及人数(int P_count),然后用想要这样的效果:
名次(从小到大) 城区名称 医院个数(按个数降序排列) 人数
1 A 20 50
2 B 19 56
3 C 15 150
查询数据的方法不用介绍,我可以查出来。请问我要怎样实现这样的效果,用什么控件,谁给谁赋值,说个方法,请教高手!!!
贴点儿源码:
AreaInfo[] areaInfo = ...(此处省略方法)...GetObjects();
if (areaInfo != null && areaInfo.Length > 0)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.Tables.Add(dt);
dt.Columns.Add("名次", typeof(Int32));
dt.Columns.Add("城区名称");
dt.Columns.Add("医院个数", typeof(Int32));
dt.Columns.Add("人数");
for (int i = 0; i < areaInfo.Length; i++)
{
// 查出属于A城区的医院个数
int H_Count =...方法省略...GetCount(...hospital.ares==areaInfo[i].Name);
int P_Count = =...方法省略....GetCount(...hospital.ares=areaInfo[i].Name );
DataRow dtRow = dt.NewRow();
dtRow["名次"] = i + 1; //这一句应该不要,排名最后要排序
dtRow["城区名称"] = areaInfo[i].Name;
dtRow["医院个数"] = H_Count;
dtRow["人数"] = P_Count;
dt.Rows.Add(dtRow);
}
DataView dv = dt.DefaultView; // 据说这是排序,但我没发现
dv.Sort = "医院个数 asc";
dt = dv.ToTable();
datalistTJ.DataSource = ds; //.Tables["dt"]; //datalist控件 换个能用的也行
datalistTJ.DataBind(); } 展开
5个回答
展开全部
首先dt.DefaultView不是排序,而是一个默认视图属性,要排序的话,在sql语句中用个order by 就行了
其次,在写sql语句时,使用列的别名就行了,省的去构造一个内存表再填充到datalist中。
其次,在写sql语句时,使用列的别名就行了,省的去构造一个内存表再填充到datalist中。
追问
我这个不涉及SQL语句,封装的有方法,但是只能查出来A区有多少家,B区有多少家,不能同时查出来啊。首先【医院表】是一家一家医院,没有顺序的,而且每一家医院只能属于一个城区,有那么多城区,怎么能同时查出来A区多少家、B区多少家,还能同时排序啊?你看问题,加上我的追问,希望能给个可行的方法。谢谢~
追答
var query = dt.AsEnumerable().OrderBy(q=>q.Field("医院个数")); // 按照医院个数进行递增排序
dt = query.CopyToDataTable();
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
展开全部
DataView是能排序的,你排序完了要把DataView当做数据源,你贴出来的代码又把ds作为了数据源绑定回去了,所以排序没有效果
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
推荐你直接用2表联合查询,在数据层解决问题,这样就不需要再次网DS里填充数据了!直接绑定就能使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
gridview 自动分页,但还需自己添加相关的分页代码。
repeater ,datalist都可以绑定数据,但好像没有自动分页功能。
repeater ,datalist都可以绑定数据,但好像没有自动分页功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有点不明白你想说什么。你不是都已经实现效果了么。
我一般都是初始化创建DataTable,然后使用Dt.newRow()来创建一个DataRow将内容重组后插入到datatable
然后将这些内容通过dataview进行排序。你的代码里面也已经实现了啊。defaultview是将他变成一个可视化的数据模型,然后对这个模型进行sort,以医院个数为参考进行升序排序。然后databind绑定。啥控件都可以绑定的。只要是数据控件。如果是容器的话。。。。额。。貌似你用不到。
我一般都是初始化创建DataTable,然后使用Dt.newRow()来创建一个DataRow将内容重组后插入到datatable
然后将这些内容通过dataview进行排序。你的代码里面也已经实现了啊。defaultview是将他变成一个可视化的数据模型,然后对这个模型进行sort,以医院个数为参考进行升序排序。然后databind绑定。啥控件都可以绑定的。只要是数据控件。如果是容器的话。。。。额。。貌似你用不到。
追问
defaultview究竟能不能实现排序,我没有继续尝试,但是按照【philanthr92】的排序可以实现。
追答
个人觉得代码偏向复杂了。呵呵。我的个人建议是。.NET东西能用就用。代码越简单越好。便于后期维护
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询