📄 editarticleclass.ascx.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 + -