⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editarticleclass.ascx.vb

📁 如果不使用IIS,请先运行 XSP.exe,待提示已侦听 8080端口后
💻 VB
字号:
Imports DNNLite.Entites.Modules
Imports DNNLite.Comm
Imports DNNLite.DesktopModules.Article
Imports NHibernate.Expression
Imports Castle.ActiveRecord
Partial Class DesktopModules_Article_EditArticleClass
    Inherits PortalModuleBase

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (HttpContext.Current.Items("castleactivesession") Is Nothing) Then
            HttpContext.Current.Items("castleactivesession") = _
                New SessionScope(FlushAction.Never)
        End If


        If Not IsPostBack Then
            BuildTreeAndFillDrop()
            ViewState("mode") = "read"
        End If
    End Sub

#Region "建立树并填充下拉框"

    Private Sub BuildTreeAndFillDrop()

        trvArticeClass.Nodes.Clear()
        ddlParent.Items.Clear()

        ddlParent.Items.Add("是一级分类")

        If (HttpContext.Current.Items("castleactivesession") Is Nothing) Then
            HttpContext.Current.Items("castleactivesession") = _
                New SessionScope(FlushAction.Never)
        End If

        Dim cs As ArticleClass() = _
            ArticleClass.FindAll(ArticleClass.Asc("SortNum", "Id"), New NullExpression("Parent"))

        For Each el As ArticleClass In cs
            Dim tnode As New TreeNode(el.Name)

            tnode.Value = el.Id

            trvArticeClass.Nodes.Add(tnode)
            BindChildNode(el, tnode)

            Dim itm As New ListItem(el.Name, el.Id)
            ddlParent.Items.Add(itm)

            BindDDLItem(el, 0)
        Next
    End Sub
    Private Sub BindDDLItem(ByVal c As ArticleClass, ByVal level As Int16)


        For Each el As ArticleClass In c.Childs
            Dim itm As New ListItem(StrDup(level, " ") & "┗" & el.Name, el.Id)
            ddlParent.Items.Add(itm)

            BindDDLItem(el, level + 1)
        Next
    End Sub
    Private Sub BindChildNode(ByVal c As ArticleClass, ByVal node As TreeNode)


        For Each el As ArticleClass In c.Childs
            Dim tnode As New TreeNode(el.Name)
            tnode.Value = el.Id

            node.ChildNodes.Add(tnode)

            BindChildNode(el, tnode)
        Next

    End Sub

#End Region

    Private Sub BindData(ByVal c As ArticleClass)

        If c.Parent Is Nothing Then
            ddlParent.SelectedIndex = 0
        Else
            ddlParent.SelectedValue = c.Parent.Id.ToString()
        End If

        litClassName.Text = c.Name

        Dim js As String = "javascript:void(window.open('{0}','新增文章', 'height=650, width=900, top=10,left=10, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no'));"
        js = String.Format(js, EditUrl("Edit", "addnew=true", "backadmin=true", "addclassid=" & c.Id.ToString()))
        lnkAddArticle.HRef = js

        hidarticleclassid.Value = c.Id
        txtEName.Text = c.EName
        txtName.Text = c.Name
        txtSortNum.Text = c.SortNum
    End Sub

    Protected Sub trvArticeClass_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles trvArticeClass.SelectedNodeChanged
        If trvArticeClass.SelectedNode Is Nothing Then Return

        Dim c As ArticleClass = ArticleClass.Find(Integer.Parse(trvArticeClass.SelectedValue))
        BindData(c)

        ViewState("mode") = "edit"
        MultiView1.ActiveViewIndex = 1
        btnArticles.Enabled = True

    End Sub

    Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        ViewState("mode") = "add"
        MultiView1.ActiveViewIndex = 1
        btnArticles.Enabled = False

        BindData(New ArticleClass())

    End Sub

    Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        Server.Transfer(Request.Url.PathAndQuery)
    End Sub

    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim cs As ArticleClass
        If ViewState("mode") = "add" Then
            cs = New ArticleClass()
        Else
            cs = ArticleClass.Find(Integer.Parse(hidarticleclassid.Value))
        End If


        If ddlParent.SelectedValue = cs.Id.ToString() And ddlParent.SelectedIndex > 0 Then
            lblerr.Text = "上级分类不能是自己"
            Return
        ElseIf ddlParent.SelectedIndex > 0 Then
            cs.Parent = ArticleClass.Find(Integer.Parse(ddlParent.SelectedValue))
        Else
            cs.Parent = Nothing
        End If

        cs.Name = txtName.Text
        cs.EName = txtEName.Text

        If cs.Parent Is Nothing Then
            cs.Level = 0
        Else
            cs.Level = cs.Parent.Level + 1
        End If

        If IsNumeric(txtSortNum.Text) Then
            cs.SortNum = Integer.Parse(txtSortNum.Text)
        End If

        If cs.IsValid() Then
            cs.SaveAndFlush()

            'DataCache.Refresh()

            Server.Transfer(Request.RawUrl)
        Else
            lblerr.Text = cs.ValidationErrorMessages(0)
        End If




    End Sub

    Protected Sub btnDel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDel.Click
        If ViewState("mode") = "add" Then
            btnCancel_Click(sender, e)
        ElseIf ViewState("mode") = "edit" Then

            Dim cs As ArticleClass = ArticleClass.Find(Integer.Parse(hidarticleclassid.Value))
            cs.DeleteAndFlush()

            Server.Transfer(Request.RawUrl)

        End If

    End Sub

    Protected Sub btnBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBack.Click
        Response.Redirect(EditUrl())
    End Sub

    
    Private Sub BindArticleGrid()
        Dim sql As String
        sql = "select a.id,a.author,a.TitleIntact,a.createtime,a.updatetime" & _
            "  ,b.[sort] as [sort] from article a  inner join articleclassref b on"
        sql = sql & vbCrLf & "a.id=b.articleid  "
        sql = sql & vbCrLf & " "
        sql = sql & vbCrLf & "where b.articleclassid = " & Integer.Parse(hidarticleclassid.Value)
        sql = sql & vbCr & ""
        sql = sql & vbCrLf & "order by a.IsTop Desc,b.[sort] desc,a.CreateTime Desc,"

        sql = sql & vbCrLf & "a.Id Desc"

        Dim tb As Data.DataTable = DbService.GetTable(sql)
        
        grdArticles.DataSource = tb

        grdArticles.DataBind()

    End Sub

    Protected Sub btnArticles_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnArticles.Click
        MultiView1.ActiveViewIndex = 2
        BindArticleGrid()

        grdToAddArticle.DataSource = Nothing
        grdToAddArticle.DataBind()

    End Sub

    Protected Sub btnCancel2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel2.Click
     
        MultiView1.ActiveViewIndex = 1
    End Sub

    Protected Sub grdArticles_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdArticles.PageIndexChanging
        grdArticles.PageIndex = e.NewPageIndex
        BindArticleGrid()
    End Sub


    Protected Sub grdArticles_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdArticles.RowCommand
        Try
            Select Case e.CommandName
                Case "D"

                    'Dim cs As ArticleClass = ArticleClass.Find(Integer.Parse(hidarticleclassid.Value))
                    'cs.Articles.Remove(Article.Find(Integer.Parse(e.CommandArgument)))
                    'cs.UpdateAndFlush()

                    ArticleClassRef.DeleteAll("ArticleId=" & Integer.Parse(e.CommandArgument) & " And ArticleClassId=" & Integer.Parse(hidarticleclassid.Value))

                    BindArticleGrid()
                Case "UpDateSort"
                    Dim sorttext As String = CType(CType(e.CommandSource, LinkButton).Parent.Parent.FindControl("txtSort"), TextBox).Text
                    Dim sort As Integer

                    If Integer.TryParse(sorttext, sort) Then

                        Dim ars As ArticleClassRef = ArticleClassRef.FindOne(New EqExpression("ArticleId", Integer.Parse(e.CommandArgument)), New EqExpression("ArticleClassId", Integer.Parse(hidarticleclassid.Value)))
                        If ars Is Nothing Then
                            ars = New ArticleClassRef()
                            ars.ArticleId = Integer.Parse(e.CommandArgument)
                            ars.ArticleClassId = Integer.Parse(hidarticleclassid.Value)
                        End If

                        ars.Sort = sort
                        ars.SaveAndFlush()

                    
                    End If

                    BindArticleGrid()
            End Select
        Catch ex As Exception
            ProcessModuleLoadException(ex)
        End Try

    End Sub



    Private Sub BindToAddArticle()
        Dim sql As String
        sql = "select a.id,a.author,a.TitleIntact,a.createtime,a.updatetime" & _
            "   from article a  "
        
        sql = sql & vbCrLf & "where not exists( select * from articleclassref b where b.articleid=a.id and b.articleclassid=" & Integer.Parse(hidarticleclassid.Value) & " )"

        If Not String.IsNullOrEmpty(txtStDate.Text) Then
            sql = sql & vbCrLf & "and a.CreateTime>='" & txtStDate.Text & " 00:00'"
        End If

        If Not String.IsNullOrEmpty(txtEdDate.Text) Then
            sql = sql & vbCrLf & "and a.CreateTime<='" & txtEdDate.Text & " 23:59'"
        End If

        If Not String.IsNullOrEmpty(txtfindtext.Text) Then
            sql = sql & vbCrLf & "and a.titleintact like '" & txtfindtext.Text.Replace("'", "''") & "'"
        End If

        sql = sql & vbCrLf & "order by a.IsTop Desc,a.CreateTime Desc,"
        sql = sql & vbCrLf & "a.Id Desc"

        Dim tb As Data.DataTable = DbService.GetTable(sql)

        grdToAddArticle.DataSource = tb

        grdToAddArticle.DataBind()
    End Sub
    Protected Sub grdToAddArticle_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdToAddArticle.PageIndexChanging
        grdToAddArticle.PageIndex = e.NewPageIndex
        BindToAddArticle()
    End Sub

    Protected Sub btnQuery_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQuery.Click
        BindToAddArticle()

    End Sub

    Protected Sub grdToAddArticle_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles grdToAddArticle.RowCommand
        Try
            Select Case e.CommandName
                Case "Add"
                    'Dim cs As ArticleClass = ArticleClass.Find(Integer.Parse(hidarticleclassid.Value))
                    'cs.Articles.Add(Article.Find(Integer.Parse(e.CommandArgument)))
                    'cs.UpdateAndFlush()

                    'Dim a As Article = Article.Find(Integer.Parse(e.CommandArgument))
                    'a.BelongsClass.Add(cs)

                    'a.UpdateAndFlush()

                    Dim artref As New ArticleClassRef()
                    artref.ArticleClassId = Integer.Parse(Integer.Parse(hidarticleclassid.Value))
                    artref.ArticleId = Integer.Parse(e.CommandArgument)

                    Try
                        artref.CreateAndFlush()
                    Catch ex As Exception
                        lblerr.Text = ex.Message
                    End Try

                    BindArticleGrid()
                    BindToAddArticle()
            End Select
        Catch ex As Exception
            ProcessModuleLoadException(ex)
        End Try

    End Sub
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -