首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求高手-帮小弟我改下语句

2012-01-06 
求高手-------帮我改下语句classidclassnamefatheridscblevel1蔬菜类-1012白菜101013大白菜20101014小白菜

求高手-------帮我改下语句
classid   classname   fatherid     scblevel
1                 蔬菜类       -1                   01
2                 白菜             1                   0101
3                 大白菜         2                   010101
4                 小白菜         2                   010102
5                   茄子           1                   0102
6                   大茄子       5                   010201
7                   小茄子       5                   010202
8               上等小茄子   7                   01020201
表是这个样子的。
要用listbox显示。
绑定语句如下:
  string   sql   =   "select   *   from   scb_subject   order   by   scblevel ";
                SqlCommand   MyComm   =   new   SqlCommand(sql,   MyConn);
                MyComm.CommandText   =   sql;
                SqlDataAdapter   da   =   new   SqlDataAdapter(sql,   MyConn);
                DataSet   ds   =   new   DataSet();
                da.Fill(ds, "class ");
                ListBox1.DataSource=ds;                
                ListBox1.DataTextField= "classname ";
                ListBox1.DataValueField= "classID ";
                ListBox1.DataBind();
现在我想利用判断scblevel的字符长度判断。
如果字符长度为4那么在分支的前面添加-
如果字符长度为6那么在分支添加2个-
效果:
蔬菜类
蔬菜
-白菜
--大白菜
--小白菜
-茄子
--大茄子
--小茄子
---上等小茄子
怎么加?

这里想写成循环。
应该用while来写。但是我不知道这里应该怎么写。
求高手。帮添一下。

[解决办法]
try:

string sql = "select classid,(Case when LEN(scblevel)=4 then '- '+classname
when LEN(scblevel)=6 then '-- '+classname end) as classname, fatherid, scblevel from scb_subject order by scblevel ";
[解决办法]
后台写个方法
a(string a)
{
for(i=0;i <a.length;i+=2)
{
a = "- " + a;
}
return a;
}
绑定时这样 <%# a(Eval( "scblevel ").toString()) %>
[解决办法]
try

SELECT
classid, (CASE LEN(scblevel) WHEN 4 THEN '- '+classname WHEN 6 THEN '-- '+classname WHEN 8 THEN '--- '+classname ELSE classname END) AS classname


FROM yourTable
[解决办法]
在SQL Server中的解决方案:
——————————————————————————————————————————
--生成测试数据
declare @t table(classid int,classname varchar(16),fatherid int,scblevel varchar(20))
insert into @t select 1, '蔬菜类 ',-1, '01 '
insert into @t select 2, '白菜 ', 1, '0101 '
insert into @t select 3, '大白菜 ', 2, '010101 '
insert into @t select 4, '小白菜 ', 2, '010102 '
insert into @t select 5, '茄子 ', 1, '0102 '
insert into @t select 6, '大茄子 ', 5, '010201 '
insert into @t select 7, '小茄子 ', 5, '010202 '
insert into @t select 8, '上等小茄子 ', 7, '01020201 '

--执行查询语句
select
REPLICATE( '- ',(len(scblevel)-2)/2)+classname as classname
from
@t
order by
scblevel

--查询输出的结果
/*
classname
-----------------------
蔬菜类
-白菜
--大白菜
--小白菜
-茄子
--大茄子
--小茄子
---上等小茄子
*/

热点排行