datalist中的排序该去怎么实现呢?

pang20c 2010-04-21 06:38:18
就是我有一个导航栏 是由datalist动态生成的 我想让用户去控制 哪个显示在前面哪个显示在后面 而其能够将这个顺序保存起来 设定好后 以后都按这个顺序显示 该怎么做能给个思路吗?大概给我讲讲思路
...全文
183 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
duxj007 2010-04-21
  • 打赏
  • 举报
回复
xuexi~~~~~`
pang20c 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mngzilin 的回复:]
简单实现:

添加一数据列order和inserttime,类型都为datetime。第一次插入时候都设置为当前时间。当上移时候和上面的记录交换order的值(下移反之),置顶时候设置为最新时间,取消置顶时候设置为与inserttime相同的值
[/Quote]
诶~不错 。。用时间去排序 好主意 有点思路了 O(∩_∩)O谢谢~就是还不知道 怎么选定一列 难道要用radiobutton然后遍历datalist中的radiobutton吗?感觉这样好不人性 啊。。
mngzilin 2010-04-21
  • 打赏
  • 举报
回复
简单实现:

添加一数据列order和inserttime,类型都为datetime。第一次插入时候都设置为当前时间。当上移时候和上面的记录交换order的值(下移反之),置顶时候设置为最新时间,取消置顶时候设置为与inserttime相同的值
pang20c 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sxiaohui8709253 的回复:]
主要是你那个支持拖拉的功能 我感觉html的ui跟li 可以
先在页面上放一个div

HTML code

<div id="divmenu" runat="server"></div>


从数据库读出菜单后
在page_load()
写个方法 循环

C# code

this.divmenu.InnerHtml="";
for(int i=0;i<dt.R……
[/Quote]额。。也不一定要拉动 我想的就是。。恩。。。你见过gridview点开编辑列后左下角那个框框的功能吧?就是点一下某列 那列变蓝 被选中 然后右面有一个上移下移的按钮 移动改变顺序 就是这种 该怎么去实现啊?我遇到的第一个困难就是怎么让用户点击datalist中的某个item后那个item就背景变蓝被选中 也就是怎么知道用户点的是datalist中的哪一列呢(不是超链接的那种点击)?
sxiaohui8709253 2010-04-21
  • 打赏
  • 举报
回复
主要是你那个支持拖拉的功能 我感觉html的ui跟li 可以
先在页面上放一个div

<div id="divmenu" runat="server"></div>

从数据库读出菜单后
在page_load()
写个方法 循环

this.divmenu.InnerHtml="";
for(int i=0;i<dt.Rows.Count;i++)
{
this.divmenu.InnerHtml+="<ul"+"id=ud"+i+">"
for(int j=0;j<dt.Columns.Count)
{
this.divmenu.InnerHtml+="<li>"+dt.Rows[i][j]+"</li>";
}
this.divmenu.InnerHtml+="</ul>";
}





后台写js方法来能让他拖拉

function order(tt,old,classover,classout) {
var sf = arguments.callee; //get the function self
var trs = tt.getElementsByTagName('tr');
for(var i=0;i<trs.length;i++) {
trs[i].onmousedown = function () {
if(this.style.cursor == 'move') {
return false;
}
classout = this.className;
this.className = classover;
this.style.cursor = 'move';
old = this;
}
trs[i].onmouseover = function () {
if(this.style.cursor == 'move' || !old) {
return false;
}
var tmp_old = old.cloneNode(true);
var tmp_now = this.cloneNode(true);
var p = this.parentNode;
p.replaceChild(tmp_now,old);
p.replaceChild(tmp_old,this);
sf(tt,tmp_old,classover,classout);
}
trs[i].onmouseout = function () {
//this.className = classout;
}
trs[i].onmouseup = function () {
this.className = classout;
this.style.cursor = '';
old = null;
}
}
}


把以上的JS方法里头的Tr改成UL
试试看吧
liaoyukun111 2010-04-21
  • 打赏
  • 举报
回复
create table tb(tid int)
insert into tb values(0)
insert into tb values(1)
insert into tb values(2)
insert into tb values(3)
insert into tb values(4)
insert into tb values(5)
insert into tb values(6)
insert into tb values(7)
insert into tb values(8)
insert into tb values(9)
insert into tb values(10)
insert into tb values(11)
insert into tb values(12)
go

select m.tid from
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) m,
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) n
where n.tid =3 and abs(m.px - n.px) =1 --找到当前ID的前后或一条数据
order by m.tid


select m.tid from
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) m,
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) n
where n.tid =3 and m.px - n.px=1 --找到当前ID的后条数据
order by m.tid

select m.tid from
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) m,
(
select * , px = (select count(1) from tb where tid < t.tid) + 1 from tb t
) n
where n.tid =3 and m.px - n.px=-1 --找到当前ID的前条数据
order by m.tid
有了这个排序列 互换排序列(PX)就可以实现了
pang20c 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq497525725 的回复:]
1. 用js控制前台显示
2. 排序Datalist的数据源
[/Quote]用JS怎么个控制法?控制完这个显示的顺序 该以个什么形式 去保存起来这个顺序呢?
pang20c 2010-04-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sxiaohui8709253 的回复:]
这个DATALIST难办吧
[/Quote]那有什么好办点的?我就是想要一个动态显示的导航栏 不用datalist也行 就是要求导航栏里的内容是从数据库读出的 ,读出的个数(也就是导航栏中显示的个数)也不是固定的
qq497525725 2010-04-21
  • 打赏
  • 举报
回复
1. 用js控制前台显示
2. 排序Datalist的数据源
sxiaohui8709253 2010-04-21
  • 打赏
  • 举报
回复
这个DATALIST难办吧
导言 创建一个数据访问层 创建一个业务逻辑层 母板页和站点导航 基本报表 使用ObjectDataSource展现数据 声明参数 编程设置ObjectDataSource的参数值 主/从 使用DropDownList过滤的主/从报表 使用两个DropDownList过滤的主/从报表 跨页面的主/从报表 使用GridView 和DetailView实现的主/从报表 自定义格式化 基于数据的自定义格式化 在GridView控件使用TemplateField 在DetailsView控件使用TemplateField 使用FormView 的模板 在GridView的页脚显示统计信息 编辑插入和删除数据 概述插入、更新和删除数据 研究插入、更新和删除的关联事件 在ASP.NET页面处理BLL/DAL层的异常 给编辑和新增界面增加验证控件 定制数据修改界面 实现开放式并发 为删除数据添加客户端确认 基于用户对修改数据进行限制 分页和排序 分页和排序报表数据 大数据量时提高分页的效率 排序自定义分页数据 创建自定义排序用户界面 自定义按钮行为 GridView里的Button 使用DataList和Repeater显示数据 用DataList和Repeater来显示数据 格式化DataList和Repeater的数据 使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 综叙:在DataList里编辑和删除数据 批量更新 处理BLL和DAL的异常 在编辑和插入界面里添加验证控件 自定义DataList编辑界面 实现开放式并发 为删除数据添加客户端确认 基于用户对修改数据进行限制 DataList和Repeater的分页和排序 DataList和Repeater数据分页 DataList和Repeater数据排序(一) DataList和Repeater数据排序(二) DataList和Repeater数据排序(三) DataList和Repeater的自定义按钮行为 DataList和Repeater里的自定义button 从ASP.NET页面直接访问数据库 47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

62,025

社区成员

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

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

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

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