关闭

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

标签: datagridtextboxbuttonaspserverstring
1270人阅读 评论(0) 收藏 举报
分类:

实现效果:

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
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:71636次
    • 积分:1100
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:18篇
    • 译文:0篇
    • 评论:6条
    最新评论