如何把数据这样自由的显示出来?
我想实现象易趣的功能,把从数据库中提取出来的数据这样显示出来:
------------------------------------------------------------------
笔记本电脑及配件 台式电脑 掌上电脑/PDA 电脑配件 电脑外设 服务器/工作站/网络 办公设备 电脑软件 耗材 游戏机及配件 电脑网络类书籍 网络游戏/帐号 电脑产品维修/租赁/收购 全新台式整机
------------------------------------------------------------------
而不是在控件的表格中象这样规规矩矩的显示出来
笔记本电脑及配件 台式电脑 掌上电脑/PDA
电脑配件 电脑外设 服务器/工作站/网络
办公设备 电脑软件 耗材 游戏机及配件 电脑网络类书籍 网络游戏帐号 电脑产品维修 租赁/收购 全新台式整机
---------------------------------------------------------------------
如下是我把数据放在了 datalist 中了,但是该如何那样的显示出来呢?
public void rc_gzjl_info_BindGrid()
{
try
{
string strconn = ConfigurationSettings.AppSettings["SqlConnectionString"];
SqlConnection myconn=new SqlConnection(strconn);
myconn.Open();
SqlDataAdapter myAdapter=new SqlDataAdapter("select * from 分类,myconn);
DataSet ds=new DataSet();
myAdapter.Fill(ds,"分类");
this.rc_gzjl_datalist.DataSource=ds.Tables["分类"].DefaultView;
this.rc_gzjl_datalist.DataBind();
myconn.Close();
}
catch(Exception)
{
}
}
问题点数:20、回复次数:10Top
1 楼parsely(林琳)回复于 2003-09-04 18:30:42 得分 0
上面的有点错位,应该这样:
------------------------------------------------------------------------
笔记本电脑及配件 台式电脑 掌上电脑/PDA
电脑配件 电脑外设 服务器/工作站/网络
办公设备 电脑软件 耗材 网络游戏帐
电脑产品维修 租赁/收购 全新台式整机
----------------------------------------------------------------------------
Top
2 楼JGTM2000(铁马小子)回复于 2003-09-04 18:33:30 得分 0
不要看着浏览器显示的结果去想怎么写代码,而应该看着对应于结果的HTML代码入手。也许一个String.Join就解决你的问题了。Top
3 楼llm2002()回复于 2003-09-04 18:34:01 得分 0
"笔记本电脑及配件 台式电脑 掌上电脑/PDA 电脑配件 电脑外设 服务器/工作站/网络 办公设备 电脑软件 耗材 游戏机及配件 电脑网络类书籍 网络游戏/帐号 电脑产品维修/租赁/收购 全新台式整机"
是一个字段的吗?Top
4 楼parsely(林琳)回复于 2003-09-04 18:50:42 得分 0
To:llm2002()
是啊,都是 表“分类”中字段“分类名称”的名字。
就是让它们紧凑的显示出来。
Top
5 楼OliveT(八哥·兔)回复于 2003-09-04 20:01:06 得分 0
不要使用DG,DL和Reapter,使用多个超链接标签好了Top
6 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2003-09-04 20:22:30 得分 10
楼上的兄弟,使用Repeater很方便啊!象这样:
<asp:Repeater runat="server" id="Repeater1">
<a href='category.aspx?id=<%#DataBinder.Eval(Container.DataItem,"编号")%>'><%#DataBinder.Eval(Container.DataItem,"分类名称")%></a>
</asp:Repeater>
--------------------
后台代码:
SqlConnection conn=...//省略
SqlDataAdapter adapter=new SqlDataAdapter("select 编号,分类名称 from 分类",conn);
DataTable table=new DataTable();
adapter.Fill(table);
Repeater1.DataSource=table;
Repeater1.DataBind();Top
7 楼JGTM2000(铁马小子)回复于 2003-09-04 20:50:55 得分 10
用Repeater是最合适也最容易的,引发数据绑定只需要写:
repeater.DataSource = yourDataTable;
repeater.DataBind();
(具体参见陕北吴旗娃给出的后台代码)
同数据源绑定时,repeater会为DataTable中的每一行创建一个列表项。接下来你为repeater的ItemCreated事件写如下代码:
private void repeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
e.Item.Controls.Add(new LiteralControl("·"));
DataRowView row = (DataRowView)e.Item.DataItem;
string url = "#"+row["id"];
string text = row["分类名称"];
HyperLink link = new HyperLink();
link.NavigateUrl = url;
link.Text = text;
e.Item.Controls.Add(link);
}
这段程序为每一个绑定生成的列表项生成内容,当然,你也可以像陕北吴旗娃那样在ASPX中给Repeater写ItemTemplate(结合数据绑定语法),不过这样会有一些性能代价(因为DataBinder.Eval使用Reflection求值,效率当然不如强类型访问,对于性能要求高的应用程序还是尽量避免的好)。
另外,我开始提到的String.Join方法对于用连接符连接若干字符串是很有用的,比如说:
String.Join("·", new string[] {"a","b","c"})即得到a·b·c。结合合适的HTML代码也可以解决很多看上去很复杂的问题。Top
8 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2003-09-04 22:44:22 得分 0
对不起,我一时粗心竟把<ItemTemplate>给丢了!:)Top
9 楼JGTM2000(铁马小子)回复于 2003-09-05 01:43:35 得分 0
如果使用ItemCreated事件处理程序来动态的控制每个列表项的生成的话,Repeater控件里面可以是空的(即不需要包括ItemTemplate在内的任何模版)。Top
10 楼JGTM2000(铁马小子)回复于 2003-09-08 01:52:08 得分 0
这是后来我给楼主写去的一个单文件测试页面,将下面的内容拷贝到一个.aspx文件中放到IIS虚拟目录下即可访问,供大家参考:
<%@Page Language="C#" AutoEventWireup="true" %>
<script runat="server">
void Page_Load()
{
myRepeater.DataSource = new string[] {"one","two","three"};
myRepeater.DataBind();
}
void DoWhenItemCreated(object sender, RepeaterItemEventArgs e)
{
e.Item.Controls.Add(new LiteralControl("·"));
HyperLink link = new HyperLink();
string url = "anotherPage.aspx?" + (string)e.Item.DataItem;
string text = (string)e.Item.DataItem;
link.NavigateUrl = url;
link.Text = text;
e.Item.Controls.Add(link);
}
</script>
<html>
<body style="font-family: Verdana">
<center>
<asp:Repeater runat="server" id="myRepeater"
OnItemCreated="DoWhenItemCreated" />
</center>
</body>
</html>Top




