无限级分类在DataGrid和DropDownList中的体现

原创 2006年05月18日 09:12:00

实现效果:

Datagrid

Dropdownlist

实现效果:
Datagrid:
Dropdownlist:
实现步骤:
1、  创建表:
CREATE TABLE [dbo].[mulType] (
[TypeId] [int] IDENTITY (1, 1) NOT NULL ,
[PriTypeId] [int] NULL ,
[TypeCode] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[TypeName] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Layer] [tinyint] NULL
) ON [PRIMARY]
2、  创建视图:图片可以自由定义
create      view vmulType
as
select icon='<img src=null.gif height=5 border=0 width='+cast(layer*16 as varchar(20))+'><img src=part'+cast(layer as varchar(20))+'.gif border=0>',
TypeId,PriTypeId,TypeCode,TypeName=replicate('--',layer*2)+TypeName,TypeName2=TypeName,Layer
FROM mulType
3、  mulType.aspx
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="mulType.aspx.vb" Inherits="vbProject.mulType"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
       <HEAD>
              <title>mulType</title>
              <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
              <meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
              <meta content="JavaScript" name="vs_defaultClientScript">
              <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
       </HEAD>
       <body MS_POSITIONING="GridLayout">
              <form id="Form1" method="post" runat="server">
                     <asp:textbox id="TextBox1" style="Z-INDEX: 101; LEFT: 88px; POSITION: absolute; TOP: 32px" runat="server"></asp:textbox>
                     <asp:button id="Button1" style="Z-INDEX: 102; LEFT: 248px; POSITION: absolute; TOP: 32px" runat="server"
                            Text="新增"></asp:button>
                     <asp:dropdownlist id="DropDownList1" style="Z-INDEX: 103; LEFT: 88px; POSITION: absolute; TOP: 72px"
                            runat="server" DataTextField="TypeName" DataValueField="TypeId"></asp:dropdownlist><asp:textbox id="txtTypeId" style="Z-INDEX: 104; LEFT: 64px; POSITION: absolute; TOP: 288px"
                            runat="server" Width="0px"></asp:textbox>
                     <asp:datagrid id="DataGrid1" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 128px"
                            runat="server" Width="696px" AutoGenerateColumns="False">
                            <Columns>
                                   <asp:HyperLinkColumn DataNavigateUrlField="TypeId" DataNavigateUrlFormatString="mulType.aspx?TypeId={0}"
                                          DataTextField="cTypeName" HeaderText="类别名称"></asp:HyperLinkColumn>
                                   <asp:BoundColumn DataField="TypeName2" HeaderText="类别名称"></asp:BoundColumn>
                                   <asp:BoundColumn DataField="TypeCode" HeaderText="类别代码"></asp:BoundColumn>
                            </Columns>
                     </asp:datagrid>
                     <asp:Button id="Button2" style="Z-INDEX: 106; LEFT: 312px; POSITION: absolute; TOP: 32px" runat="server"
                            Text="清空"></asp:Button>
              </form>
       </body>
</HTML>
4、  mulType.aspx.vb
Public Class mulType
    Inherits System.Web.UI.Page
    Private vbp As New vbProject
 
#Region " Web 窗体设计器生成的代码 "
 
    '该调用是 Web 窗体设计器所必需的。
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
 
    End Sub
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
    Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
    Protected WithEvents txtTypeId As System.Web.UI.WebControls.TextBox
    Protected WithEvents Button2 As System.Web.UI.WebControls.Button
 
    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
    '不要删除或移动它。
    Private designerPlaceholderDeclaration As System.Object
 
    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
        '不要使用代码编辑器修改它。
        InitializeComponent()
    End Sub
 
#End Region
 
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            txtTypeId.Text = "0"
            txtTypeId.Text = IIf(Request.QueryString("TypeId") = "", "0", _
                Request.QueryString("TypeId"))
            bindData()
            bindDropdownlist()
            GetData()
        End If
    End Sub
 
    Private Sub bindData()
        DataGrid1.DataSource = vbp.getmulType() '从视图中获取数据
        DataGrid1.DataBind()
    End Sub
 
    'Public Function getmulType(Optional ByVal strSearch As String = "") As DataTable
    '    Dim sql As String = " SELECT cTypeName = icon+ TypeName2,* FROM vmulType WHERE 1=1 " & strSearch
    '    sql &= " order by typecode"
    '    Return ConvertRederToTable(SqlData.ExecuteReader(getConnectString(1), CommandType.Text, sql))
    'End Function
 
    Private Sub bindDropdownlist()
        Dim dt As DataTable = vbp.getmulType()
        If dt.Rows.Count > 0 Then
            DropDownList1.DataSource = dt
            DropDownList1.DataBind()
            DropDownList1.Items.Insert(0, New ListItem("", "     "))
        End If
    End Sub
 
    Private Sub GetData()
        If Val(txtTypeId.Text) > 0 Then
            Dim dt As DataTable = vbp.getmulType(" AND TypeId = " & Val(txtTypeId.Text))
            If dt.Rows.Count > 0 Then
                TextBox1.Text = dt.Rows(0)("TypeName2").ToString()
                vbp.GetSelectedIndexByValue(DropDownList1, dt.Rows(0)("PriTypeId").ToString()) '
 
            End If
        End If
    End Sub
 
    '给下拉框指定选定值
    'Public Sub GetSelectedIndexByValue(ByRef ddlList As DropDownList, ByVal strValue As String)
    '    Dim intItems As Integer
 
    '    If Not (ddlList Is Nothing) Then
    '        With ddlList
    '            For intItems = 0 To .Items.Count - 1
    '                If .Items(intItems).Value = strValue Then
    '                    .ClearSelection() '清除原有选定
    '                    .SelectedIndex = intItems
    '                    Exit Sub
    '                End If
    '            Next
    '        End With
    '    Else
    '    End If
    'End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strValue(2) As String
        strValue(0) = txtTypeId.Text
        If DropDownList1.Items.Count > 0 Then
            strValue(1) = Val(DropDownList1.SelectedItem.Value.ToString())
        Else
            strValue(1) = ""
        End If
        strValue(2) = TextBox1.Text
        vbp.mulTypeAddUp(strValue)
        bindData()
        bindDropdownlist()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        txtTypeId.Text = "0"
        TextBox1.Text = ""
    End Sub
End Class
 

.net mvc DropDownList 下拉框_无限级分类

1、数据库设计: id:int  name:string pid:int  //父级id(顶级菜单默认为0) 2、Controller: using System; using System.Coll...
  • yan309271291
  • yan309271291
  • 2014年12月27日 16:26
  • 1774

运用无限级分类管理数据库原理详解

在做网站开发的过程中需要运用无限极分类管理数据库中的数据。但是无限级分类的原理是什么呢?总结一下吧。 无限极分类就是子节点是父节点分叉产生的。...
  • SchopenhauerZhang
  • SchopenhauerZhang
  • 2017年03月27日 16:59
  • 371

无限级分类--1(商品分类)

无限级分类多用于商品的分类 其原理就是调用函数体本身,通过传递的参数不同,则查出的数据不同 无限级分类对表的设计有着要求,子类中必须有父类的id,如果是顶级分类id则父级id(parent_id)的值...
  • liuhy_blog
  • liuhy_blog
  • 2016年11月21日 10:18
  • 877

无限级分类实现思路

无限级分类实现思路 关于该问题,暂时自己还没有深入研究,在网上找到几种解决方案,各有优缺点。   第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用...
  • lovezbs
  • lovezbs
  • 2015年06月14日 18:11
  • 245

PHP+MySQL 无限级分类的两种实现方案

PHP+MySQL 无限级分类的两种实现方案
  • u012302539
  • u012302539
  • 2017年01月04日 10:30
  • 904

PHP实现无限级分类分析

最近在写一个博客,由于博主栏目比较多,所以二级栏目已经满足不了,所以需要实现三级菜单,下面我们就一点点的来分析。 这是我最后实现的效果图: 由于需要实现无限级分类,所以我们需要知道它的子栏目有什么...
  • zpf_nevergiveup
  • zpf_nevergiveup
  • 2016年12月01日 19:31
  • 1499

PHP实现无限级分类

$arr=array( array('id'=>'1','name'=>'北京','parent'=>'0'),array('id'=>'2','name'=>'上海','parent'=>'0'),...
  • zpf_nevergiveup
  • zpf_nevergiveup
  • 2016年07月01日 16:27
  • 483

穿线树实现无限级分类

分类,分组在Web应用中到处可见,理想的原型设计,总是会遇到各种各样的新的更新需求,而来自客户的需求变更(客户简单的一句加一个下级分类),可能导致的是项目重大重构。为什么我们不从一开始就把分类做成树形...
  • Joph_csu
  • Joph_csu
  • 2017年01月07日 21:39
  • 685

PHP实现菜单无限极分类

用PHP如何无限极分类一般的项目菜单根据不同的用户,不同的角色登录,显示不同,如果仅仅用if else来判断就显得很笨拙,如果要修改菜单就很麻烦。最好的方法就是把菜单存储在数据库,然后从数据库中取出,...
  • qq_35662795
  • qq_35662795
  • 2017年03月23日 21:31
  • 2414

TP框架 验证码 分页 无限级分类

控制器接受用户的输入并调用模型和视图去完成用户的需求。 控制器类名,文件名,数据库名一致, Lib/Action 3、 URL调度模式 url调度模式就是指在tp中访问页面url的方式 ...
  • imyiligege
  • imyiligege
  • 2016年03月16日 15:06
  • 2359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无限级分类在DataGrid和DropDownList中的体现
举报原因:
原因补充:

(最多只允许输入30个字)