当前位置:编程学习 > C#/ASP.NET >>

喜欢技术钻研的进,操蛋的UI设计出的效果,请问大神这个效果可以实现吗?怎么实现?

表名  T_Products
数据源
ID    Nmae     Spec
1     name1    100
2     name2    80
3     name2    100
4     name5    100
5     name6    100
6     name1    150
7     name3    100
8     name5    30
9     name2    400
10     name1    200
11     name1    300
12     name3    800


希望得出的查询结果是
Nmae     Spec
name1    100
         150
         200
         300
name2    80
         100
         400
name3    100
         800
name5    100
         30
name6    100
UI 技术钻研 查询 sql server 界面设计 --------------------编程问答-------------------- 文不对题 --------------------编程问答--------------------
引用 1 楼 shawn_yang 的回复:
文不对题

什么意思? --------------------编程问答-------------------- 不懂意思。。。。 --------------------编程问答--------------------
引用 1 楼 shawn_yang 的回复:
文不对题

感觉这个很简单?
--------------------编程问答-------------------- pivot table控件,或者一些其他第三方的grid控件,自带的winform控件估计很难搞. --------------------编程问答-------------------- 希望得出的查询结果是
Nmae     Spec
name1    100
         150
         200
         300
name2    80
         100
         400
name3    100
         800
name5    100
         30
name6    100 --------------------编程问答-------------------- 你这SQL是要排序吗 --------------------编程问答-------------------- 如果是数据库表的话用group by 后轮训获取各个分组的具体值

如果是内存表的话用linq的groupby功能也很方便 --------------------编程问答--------------------
引用 5 楼 wushuai1346 的回复:
pivot table控件,或者一些其他第三方的grid控件,自带的winform控件估计很难搞.

最好是sql语句就可以处理
艹蛋的UI设计师设计出这种艹蛋的效果
--------------------编程问答--------------------
引用 7 楼 h576514515 的回复:
你这SQL是要排序吗

可以不排序,但是要Name相同的要放在一起 --------------------编程问答--------------------
引用 9 楼 fung1582743 的回复:
Quote: 引用 5 楼 wushuai1346 的回复:

pivot table控件,或者一些其他第三方的grid控件,自带的winform控件估计很难搞.

最好是sql语句就可以处理
艹蛋的UI设计师设计出这种艹蛋的效果
那就让操蛋的UI设计师去使用操蛋的第三方控件展现好了. --------------------编程问答--------------------
引用 8 楼 letsbetter 的回复:
如果是数据库表的话用group by 后轮训获取各个分组的具体值

如果是内存表的话用linq的groupby功能也很方便

group by应该没有这么简单吧?
目前只想到一个分布式处理,但是感觉性能上不行 --------------------编程问答--------------------
引用 11 楼 wushuai1346 的回复:
Quote: 引用 9 楼 fung1582743 的回复:

Quote: 引用 5 楼 wushuai1346 的回复:

pivot table控件,或者一些其他第三方的grid控件,自带的winform控件估计很难搞.

最好是sql语句就可以处理
艹蛋的UI设计师设计出这种艹蛋的效果
那就让操蛋的UI设计师去使用操蛋的第三方控件展现好了.


哎!人家把效果图设计出来了,后面的事情就不管了,程序员的悲剧 --------------------编程问答-------------------- 这困难么????根据Name排序,然后显示时跟前一条数据进行比较,如果Name相同就不显示当前Name,为什么一定要SQL呢? --------------------编程问答--------------------
引用 14 楼 starfd 的回复:
这困难么????根据Name排序,然后显示时跟前一条数据进行比较,如果Name相同就不显示当前Name,为什么一定要SQL呢?

齐天大圣打妖怪不难,但是沙悟净打妖精应该还是有一点棘手 --------------------编程问答--------------------
引用 14 楼 starfd 的回复:
这困难么????根据Name排序,然后显示时跟前一条数据进行比较,如果Name相同就不显示当前Name,为什么一定要SQL呢?


然后显示时跟前一条数据进行比较????? --------------------编程问答-------------------- select * from table order by name;

//rdr sqlreader
List<Entity> list = new List<Entity>();
while(rdr.Read())
{
    list.Add(new Entity()
  {
       Name= rdr["name"].ToString(),
       Spec=(int)rdr["Spec"]
   }
   if(list.Count>1)
   {
      if(list[list.Count-1].Name==list[list.Count-2].Name)
      {
           list[list.Count-1].Name=string.Empty;
      }
   }
} --------------------编程问答-------------------- 后台拼Table HTML 然后输出,以前经常这么搞 --------------------编程问答--------------------
引用 楼主 fung1582743 的回复:
表名  T_Products
数据源
ID    Nmae     Spec
1     name1    100
2     name2    80
3     name2    100
4     name5    100
5     name6    100
6     name1    150
7     name3    100
8     name5    30
9     name2    400
10     name1    200
11     name1    300
12     name3    800


希望得出的查询结果是
Nmae     Spec
name1    100
         150
         200
         300
name2    80
         100
         400
name3    100
         800
name5    100
         30
name6    100


这不就DataGridView行合并么。这有啥难的SO EASY
1.WINFORM?  找Devexxxxxx的 GridControl啥都不用写直接将数据源转进去,设一个CellMearge属睡就可以了

2.WEB 也找DevExxx WebGridControl 也有的。

3.WEB 你自己 写个Table合并行就是了,So EASY --------------------编程问答--------------------
select Nmae,Spec from T_Products group by Nmae order by Nmae
按名字分組按名字排序,結果存入datatable,datagridview和datatable綁定,結果應該如下:
Nmae     Spec
name1    100
name1    150
name1    200
name1    300
name2    80
name2    100
name2    400
name3    100
name3    800
name5    100
name5    30
name6    100 --------------------编程问答--------------------
引用 20 楼 u010700121 的回复:
select Nmae,Spec from T_Products group by Nmae order by Nmae
按名字分組按名字排序,結果存入datatable,datagridview和datatable綁定,結果應該如下:
Nmae     Spec
name1    100
name1    150
name1    200
name1    300
name2    80
name2    100
name2    400
name3    100
name3    800
name5    100
name5    30
name6    100


相同的name只保留一个 --------------------编程问答-------------------- --------------------编程问答-------------------- 那就datatable加個循環判斷吧
string name = "";//變量
for(int i=0;i<dt.rows.count;i++)
{
  if(dt.rows[i][1] == name)//當該行的姓名和name相同執行以下操作
  {
    dt.rows[i][1] = "";//name設為“”
  }
  else
  {
    name = dt.rows[i][1];//不同則該行不變,令name內容變為該行姓名
  }
}
--------------------编程问答-------------------- 利用字典,以name做key,如果有则添加到key对应的value中,如果没有则添加,然后输出,html控制 --------------------编程问答-------------------- 如果连这个都解决不了 那你以后做程序 就会很头疼了 --------------------编程问答--------------------
引用 21 楼 fung1582743 的回复:
Quote: 引用 20 楼 u010700121 的回复:

select Nmae,Spec from T_Products group by Nmae order by Nmae
按名字分組按名字排序,結果存入datatable,datagridview和datatable綁定,結果應該如下:
Nmae     Spec
name1    100
name1    150
name1    200
name1    300
name2    80
name2    100
name2    400
name3    100
name3    800
name5    100
name5    30
name6    100


相同的name只保留一个

那只能在加进datatable之前做处理解决了 --------------------编程问答--------------------           var query=from p db.table
          group p by p.Name into g
          select 
           {
              Name =g.Key,
              Spec = String.Join("、", g.Select(x => x.Spec).ToArray())
           }; 
Name   Spec
name1  100、150、200、300
name2  80、100、400
name3  100、800
name5  100、30
name6  100 --------------------编程问答--------------------
引用 25 楼 u010866602 的回复:
如果连这个都解决不了 那你以后做程序 就会很头疼了

不是解决不了,是想找一个性能更好的方法 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 27 楼 u010349035 的回复:
          var query=from p db.table
          group p by p.Name into g
          select 
           {
              Name =g.Key,
              Spec = String.Join("、", g.Select(x => x.Spec).ToArray())
           }; 
Name   Spec
name1  100、150、200、300
name2  80、100、400
name3  100、800
name5  100、30
name6  100


看样子你还是没有看懂我所说的问题 --------------------编程问答--------------------
引用 29 楼 line_us 的回复:
就是这个效果吗

恩  是的 --------------------编程问答--------------------
引用 23 楼 u010700121 的回复:
那就datatable加個循環判斷吧
string name = "";//變量
for(int i=0;i<dt.rows.count;i++)
{
  if(dt.rows[i][1] == name)//當該行的姓名和name相同執行以下操作
  {
    dt.rows[i][1] = "";//name設為“”
  }
  else
  {
    name = dt.rows[i][1];//不同則該行不變,令name內容變為該行姓名
  }
}



name不是一个固定值, --------------------编程问答--------------------
引用 30 楼 fung1582743 的回复:
Quote: 引用 27 楼 u010349035 的回复:

          var query=from p db.table
          group p by p.Name into g
          select 
           {
              Name =g.Key,
              Spec = String.Join("、", g.Select(x => x.Spec).ToArray())
           }; 
Name   Spec
name1  100、150、200、300
name2  80、100、400
name3  100、800
name5  100、30
name6  100


看样子你还是没有看懂我所说的问题

楼主到底要什么效果,spec换行? --------------------编程问答--------------------
引用 33 楼 u010349035 的回复:
Quote: 引用 30 楼 fung1582743 的回复:

Quote: 引用 27 楼 u010349035 的回复:

          var query=from p db.table
          group p by p.Name into g
          select 
           {
              Name =g.Key,
              Spec = String.Join("、", g.Select(x => x.Spec).ToArray())
           }; 
Name   Spec
name1  100、150、200、300
name2  80、100、400
name3  100、800
name5  100、30
name6  100


看样子你还是没有看懂我所说的问题

楼主到底要什么效果,spec换行?


希望得出的查询结果是
Nmae     Spec
name1    100
         150
         200
         300
name2    80
         100
         400
name3    100
         800
name5    100
         30
name6    100

列表行数不变,但是相同的name只取一个 --------------------编程问答--------------------
引用 34 楼 fung1582743 的回复:
Quote: 引用 33 楼 u010349035 的回复:

Quote: 引用 30 楼 fung1582743 的回复:

Quote: 引用 27 楼 u010349035 的回复:

          var query=from p db.table
          group p by p.Name into g
          select 
           {
              Name =g.Key,
              Spec = String.Join("、", g.Select(x => x.Spec).ToArray())
           }; 
Name   Spec
name1  100、150、200、300
name2  80、100、400
name3  100、800
name5  100、30
name6  100


看样子你还是没有看懂我所说的问题

楼主到底要什么效果,spec换行?


希望得出的查询结果是
Nmae     Spec
name1    100
         150
         200
         300
name2    80
         100
         400
name3    100
         800
name5    100
         30
name6    100

列表行数不变,但是相同的name只取一个

查出来以后用split根据"、"符号分割,然后取数组中的元素 --------------------编程问答--------------------
引用 32 楼 fung1582743 的回复:
Quote: 引用 23 楼 u010700121 的回复:

那就datatable加個循環判斷吧
string name = "";//變量
for(int i=0;i<dt.rows.count;i++)
{
  if(dt.rows[i][1] == name)//當該行的姓名和name相同執行以下操作
  {
    dt.rows[i][1] = "";//name設為“”
  }
  else
  {
    name = dt.rows[i][1];//不同則該行不變,令name內容變為該行姓名
  }
}



name不是一个固定值,


楼主...太弱了... --------------------编程问答-------------------- 无力吐槽啊!!!
--------------------编程问答-------------------- sql+算法+ui展示的控件(去了解下什么easy ui之类的列表控件)可以实现你的需求。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,