请教:如何用asp.net(c#)实现象易趣的商品目录的格式?
就是一级分类,然后下面是二级分类。用asp可以做,用.net我不知道怎么做了,谢谢各位,目录结构最好是从数据库里面读取的。 问题点数:30、回复次数:13Top
1 楼bakerk(贝壳)回复于 2004-04-02 13:46:04 得分 0
严重关注中Top
2 楼changziyu(振翅雄鹰 (哈)ACCP010182)回复于 2004-04-02 13:48:04 得分 0
学习一下,接分。Top
3 楼Judges(随便什么都可以么?)回复于 2004-04-02 14:09:39 得分 0
没人知道吗?? 顶一下Top
4 楼pierven(牛牛)回复于 2004-04-02 14:30:47 得分 2
我试着做了一下。做法是先定义好控制格式用的htmltable,将它作为服务器控件运行,id为table1。添加第二层链接的代码:
while (读取第二层目录)
{
HyperLink myhyperlink = new HyperLink();
myhyperlink.Text = 目录名称.ToString();
myhyperlink.NavigateUrl = 链接.ToString();
Table1.Rows[0].Cells[0].Controls.Add(myhyperlink); //在表格的某个单元格添加hyperlink
}
Top
5 楼andrawsky(国际米兰)回复于 2004-04-02 14:36:47 得分 0
upTop
6 楼stpangpang(胖在一方)回复于 2004-04-02 14:39:47 得分 0
我做的一个是 在datalist中嵌套datagrid 如果需要的话,我把代码贴出来Top
7 楼Judges(随便什么都可以么?)回复于 2004-04-02 14:53:10 得分 0
好啊好啊 谢谢楼上的
我现在的做法也是在datalist中做 不过我是嵌表格的Top
8 楼stpangpang(胖在一方)回复于 2004-04-02 15:00:32 得分 14
前台:
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datalist id="DataList1" style="Z-INDEX: 101; LEFT: 96px; POSITION: absolute; TOP: 53px" runat="server">
<ItemTemplate>
<asp:Label id=lblCategoryName runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "cName") %>'>
</asp:Label><BR>
<asp:Label id=lblCategoryCode runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "cCode") %>' Visible="False">
</asp:Label>
<TABLE>
<TR>
<TD align="left">
<asp:DataGrid id="dgCategory" runat="server" Font-Size="X-Small" AutoGenerateColumns="False"></asp:DataGrid></TD>
</TR>
<TR>
<TD align="right">
<asp:HyperLink id="linkMoreCategorg" runat="server" Font-Size="X-Small">>>>更多</asp:HyperLink></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:datalist></FONT></form>
</body>
后台:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not Page.IsPostBack Then
Dim ds As DataSet
ds = New DataSet()
Dim errMsg As String
errMsg = HLOAWebService.Documents_ALLCategory(ds, "category")
If errMsg <> "" Then
Response.Write("发生错误 " & errMsg)
Exit Sub
End If
Me.DataList1.DataSource = ds.Tables("category").DefaultView
Me.DataList1.DataBind()
End If
End Sub
'在datalist的ItemDataBound事件中帮定datagrid
Private Sub DataList1_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
'返回每个类型的编号cCode
Dim lbl As Integer
lbl = CType(CType(e.Item.FindControl("lblCategoryCode"), Label).Text, Integer)
'生成datagrid
Dim dg As DataGrid
dg = CType(e.Item.FindControl("dgCategory"), DataGrid)
dg.AutoGenerateColumns = False
dg.AllowSorting = False
dg.AllowPaging = False
'根据web.config配置文件 指定每页显示的记录数
dg.PageSize = CType(ConfigurationSettings.AppSettings("pageSize").ToString(), Integer)
Dim ds As DataSet
ds = New DataSet()
'调用存储过程GetCategoryByTypeCode 返回 指定文档类型代码(lbl)的全部文档
Try
HLOAWebService.Documents_GetCategoryByTypeCode(ds, "category", lbl)
Catch
'出错是不做处理
End Try
'Response.Write(lbl.ToString)
'生成超连接列
Dim HyCol As HyperLinkColumn
HyCol = New HyperLinkColumn()
HyCol.Target = "_blank"
HyCol.DataNavigateUrlField = Constant.Tables.Documents.Columns.ID
HyCol.DataNavigateUrlFormatString = "detailDocument.aspx?iid={0}"
HyCol.DataTextField = Constant.Tables.Documents.Columns.DocTitle
HyCol.HeaderText = "标题"
HyCol.HeaderStyle.Width = New Unit(120)
HyCol.ItemStyle.Width = New Unit(120)
dg.Columns.Add(HyCol)
'生成绑定列
Dim BoundCol As BoundColumn
BoundCol = New BoundColumn()
BoundCol.HeaderText = "作者"
BoundCol.HeaderStyle.Width = New Unit(85)
BoundCol.DataField = Constant.Tables.Documents.Columns.DocAuthor
BoundCol.ItemStyle.Width = New Unit(85)
dg.Columns.Add(BoundCol)
BoundCol = New BoundColumn()
BoundCol.HeaderText = "关键字"
BoundCol.HeaderStyle.Width = New Unit(150)
BoundCol.DataField = Constant.Tables.Documents.Columns.DocKey
BoundCol.ItemStyle.Width = New Unit(150)
dg.Columns.Add(BoundCol)
BoundCol = New BoundColumn()
BoundCol.HeaderText = "文档时间"
BoundCol.HeaderStyle.Width = New Unit(140)
BoundCol.DataField = Constant.Tables.Documents.Columns.DocTime
BoundCol.ItemStyle.Width = New Unit(140)
dg.Columns.Add(BoundCol)
BoundCol = New BoundColumn()
BoundCol.HeaderText = "发布人"
BoundCol.HeaderStyle.Width = New Unit(100)
BoundCol.DataField = Constant.Tables.Documents.Columns.PubName
BoundCol.ItemStyle.Width = New Unit(100)
dg.Columns.Add(BoundCol)
dg.DataSource = ds.Tables("category").DefaultView
dg.DataBind()
'绑定超级连接
Dim lnk As HyperLink
lnk = CType(e.Item.FindControl("linkMoreCategorg"), HyperLink)
lnk.NavigateUrl = "DetailCategory.aspx?TypeCode=" & lbl.ToString()
End SubTop
9 楼Judges(随便什么都可以么?)回复于 2004-04-02 15:37:15 得分 0
不是很明白 还有哪位朋友有思路?Top
10 楼newcar(newcar)回复于 2004-04-02 15:54:01 得分 14
用treeview。。。。
数据表:
商品ID 商品名称 上级商品ID 商品级别
01 ××× null null
0101 *** 01 1
0102 *** 01 1
010201 0102 2
... ... ...
----------------代码-------------
public class tree : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
public string strsql;
public string strConn;
public DataSet ds = new DataSet() ;
public DataSet ds1 = new DataSet() ;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
TreeView1.Nodes.Clear();
CreateDataSet();
intiTree(TreeView1.Nodes, "");
//InitDevelop();
}
}
private void CreateDataSet()
{
SqlConnection myConn =new SqlConnection();
strConn = System.Configuration.ConfigurationSettings.AppSettings["strconn"];
SqlCommand myCmd =new SqlCommand("select * from SY_Menu", myConn);
SqlDataAdapter datmenu1 =new SqlDataAdapter();
myConn.ConnectionString = strConn;
myCmd.Connection = myConn;
datmenu1.SelectCommand = myCmd;
datmenu1.Fill(ds, "menu1");
}
private void intiTree(TreeNodeCollection Nds,string parentId)
{
//int intId ;
string strid;
DataView dv =new DataView();
//DataRowView drv ;
dv.Table = ds.Tables["menu1"];
TreeNode tmpNd ;
dv.RowFilter = "parentid='" + parentId + "'";
foreach(DataRowView drv in dv)
{
tmpNd = new TreeNode();
strid = drv["商品id"].ToString();
tmpNd.ID = strid;
//tmpNd.Expanded = true;
tmpNd.Expanded=false;
tmpNd.Text = drv["商品名称"].ToString() ;
if(drv["商品级别"].ToString() != null)
{ tmpNd.Target = "main";
}
Nds.Add(tmpNd);
intiTree(Nds[Nds.Count - 1].Nodes, strid);
}
}
}Top
11 楼Judges(随便什么都可以么?)回复于 2004-04-02 16:04:28 得分 0
web 窗体里面没有treeview啊!?Top
12 楼stpangpang(胖在一方)回复于 2004-04-02 18:44:35 得分 0
思路就是 在datalist 中列出每个类别,然后在datalist的itemdatabound事件中,绑定 每个类别的详细信息 到datagrid中~~~Top
13 楼Judges(随便什么都可以么?)回复于 2004-04-05 08:05:23 得分 0
还是先给分了 我自己再试试 谢谢胖哥 newcarTop




