<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false"
CodeFile="KB.aspx.vb" Inherits="KB" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server">
<style type="text/css">
.style1
{
height: 230px;
}
.style2
{
width: 157px;
}
.myclass { font-size: 1.17em;text-decoration: none;color: #333399; background-color:Blue;}
</style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
<asp:ScriptManager ID="scriptAP" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upDemo" runat="server" UpdateMode="Always" ChildrenAsTriggers="true">
<ContentTemplate>
<table>
<tr>
<td valign="top">
<asp:TreeView ID="LinksTreeView" Font-Names="Arial" ForeColor="Blue" EnableClientScript="false"
OnTreeNodePopulate="PopulateNode" runat="server">
<Nodes>
<asp:TreeNode Text="Form" SelectAction="Expand" PopulateOnDemand="true" />
</Nodes>
</asp:TreeView>
</td>
<td valign="top">
<asp:GridView ID="gvDemo" DataKeyNames="ID" HorizontalAlign="Center" runat="server"
AllowPaging="True" AutoGenerateColumns="False" CellPadding="3" Font-Names="Verdana"
Font-Size="8pt" BorderWidth="0px" Width="700px" Visible="false">
<Columns>
<asp:BoundField HeaderText="" DataField="Desc" ControlStyle-Width="700" />
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:LinkButton ID="btnEdit" runat="server" Text="Edit" CssClass="myclass" CommandName="KBEDIT" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"id")%>'
CausesValidation="false" />
<asp:LinkButton ID="btnAddPost" runat="server" Text="AddPost" CommandName="KBPOST" CssClass="myclass"
CommandArgument='<%# DataBinder.Eval(Container.DataItem,"id")%>' CausesValidation="false" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<%----%>
<%----%>
</asp:GridView>
</td>
</tr>
<tr>
<td colspan="2" valign="top">
<asp:Panel ID="plnAddPost" runat="server">
<table>
<tr>
<td>
<asp:Label ID="lblSelectedRow" runat="server" Text=""></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:DropDownList ID="ddlcategory" runat="server" AutoPostBack="true">
</asp:DropDownList>
</td>
<td>
<asp:DropDownList ID="ddlsubcategory" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2">
<asp:TextBox ID="txtAddPost" runat="server" TextMode="MultiLine" Width="500" Height="200"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtAddPost"
runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:LinkButton ID="btnAddPost" runat="server" Text="AddPost" CssClass="myclass" />
</td>
<td>
<asp:LinkButton ID="btnCancle" runat="server" CssClass="myclass" CausesValidation="false" >Cancle</asp:LinkButton>
</td>
</tr>
</table>
</asp:Panel>
</td>
</tr>
</table>
<asp:HiddenField ID="hidnodeid" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvDemo" EventName="PageIndexChanging" />
<asp:AsyncPostBackTrigger ControlID="gvDemo" EventName="RowCommand" />
<asp:AsyncPostBackTrigger ControlID="gvDemo" EventName="RowDataBound" />
<asp:AsyncPostBackTrigger ControlID="btnAddPost" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnCancle" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="ddlcategory" EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="ddlsubcategory" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</asp:Content>
=========================================================================
Imports System
Imports System.Data
Imports System.Data.OleDb
Partial Class KB
Inherits System.Web.UI.Page
Dim objKBlist As New List(Of Knowledge)
Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb")
Sub PopulateNode(ByVal sender As Object, ByVal e As TreeNodeEventArgs)
Select Case e.Node.Depth
Case 0
PopulateCategories(e.Node)
Case 1
PopulateProducts(e.Node)
Case Else
End Select
End Sub
Sub PopulateCategories(ByVal node As TreeNode)
Dim ResultSet As DataSet = RunQuery("select ID,name from MasterKB")
If ResultSet.Tables.Count > 0 Then
Dim row As DataRow
For Each row In ResultSet.Tables(0).Rows
Dim NewNode As TreeNode = New TreeNode(row("name").ToString(), row("ID").ToString())
NewNode.PopulateOnDemand = True
NewNode.SelectAction = TreeNodeSelectAction.Expand
node.ChildNodes.Add(NewNode)
Next
End If
End Sub
Sub PopulateProducts(ByVal node As TreeNode)
Dim ResultSet As DataSet = RunQuery("select ID,name from MasterCT where KBID=" & node.Value)
If ResultSet.Tables.Count > 0 Then
Dim row As DataRow
For Each row In ResultSet.Tables(0).Rows
Dim NewNode As TreeNode = New TreeNode(row("name").ToString())
NewNode.PopulateOnDemand = False
NewNode.NavigateUrl = "~/KB.aspx?node=" & row("ID").ToString()
node.ChildNodes.Add(NewNode)
Next
End If
End Sub
Function RunQuery(ByVal QueryString As String) As DataSet
Dim ResultsDataSet As DataSet = New DataSet
Dim DBAdapter As New OleDbDataAdapter
cnn.Open()
Try
DBAdapter = New OleDbDataAdapter(QueryString, cnn)
DBAdapter.Fill(ResultsDataSet)
cnn.Close()
Catch ex As Exception
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If
End Try
Return ResultsDataSet
End Function
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Request.QueryString("node") IsNot Nothing Then
hidnodeid.Value = Request.QueryString("node")
End If
If Not Page.IsPostBack Then
fillGrid()
fillcategory()
If Request.QueryString("id") IsNot Nothing Then
LinksTreeView.Visible = False
gvDemo.Visible = False
plnAddPost.Visible = True
SelectedRowFrom(Request.QueryString("id"))
Else
LinksTreeView.Visible = True
gvDemo.Visible = True
plnAddPost.Visible = False
End If
End If
End Sub
Sub fillcategory()
ddlcategory.Items.Clear()
Dim cmd As New OleDbCommand
Dim dtTable As New DataTable
Dim query As String
query = "select ID,name from MasterKB"
cmd = New OleDb.OleDbCommand(query, cnn)
cnn.Open()
Dim myReader As OleDbDataReader = cmd.ExecuteReader()
While myReader.Read()
If Not IsDBNull(myReader(0)) Then
ddlcategory.Items.Add(New ListItem With {.Value = myReader(0), .Text = myReader(1)})
End If
End While
cnn.Close()
End Sub
Sub fillsubcategory(ByVal id As Integer)
ddlsubcategory.Items.Clear()
Dim cmd As New OleDbCommand
Dim dtTable As New DataTable
Dim query As String
query = "select ID,name from MasterCT where KBID=" & id
cmd = New OleDb.OleDbCommand(query, cnn)
cnn.Open()
Dim myReader As OleDbDataReader = cmd.ExecuteReader()
While myReader.Read()
If Not IsDBNull(myReader(0)) Then
ddlsubcategory.Items.Add(New ListItem With {.Value = myReader(0), .Text = myReader(1)})
End If
End While
cnn.Close()
End Sub
Sub SelectedRowFrom(ByVal id As Integer)
Dim cmd As New OleDbCommand
Dim dtTable As New DataTable
Dim query As String
query = "select KB.ID,MasterCT.KBID,KB.CTID,KB.Desc from KB inner join MasterCT on MasterCT.id =KB.CTID where KB.id=" & id
cmd = New OleDb.OleDbCommand(query, cnn)
cnn.Open()
Dim myReader As OleDbDataReader = cmd.ExecuteReader()
Dim objknowledge As New Knowledge
While myReader.Read()
If Not IsDBNull(myReader(0)) Then
objknowledge.id = myReader(0)
End If
If Not IsDBNull(myReader(1)) Then
objknowledge.kb_id = myReader(1)
End If
If Not IsDBNull(myReader(2)) Then
objknowledge.cb_id = myReader(2)
End If
If Not IsDBNull(myReader(3)) Then
objknowledge.Desc = myReader(3)
End If
End While
cnn.Close()
With objknowledge
ddlcategory.SelectedItem.Value = .kb_id
fillsubcategory(ddlcategory.SelectedItem.Value)
ddlsubcategory.SelectedItem.Value = .cb_id
lblSelectedRow.Text = .Desc
End With
End Sub
Sub fillGrid()
Dim cmd As New OleDbCommand
Dim dtTable As New DataTable
Dim query As String
If hidnodeid.Value <> "" Then
query = "select ID,CTID,Desc from KB where CTID=" & hidnodeid.Value
Else
query = "select ID,CTID,Desc from KB"
End If
cmd = New OleDb.OleDbCommand(query, cnn)
cnn.Open()
Dim myReader As OleDbDataReader = cmd.ExecuteReader()
While myReader.Read()
Dim objKB As New Knowledge
Dim objKBforPostInformation As New Knowledge
If Not IsDBNull(myReader(0)) Then
objKB.id = myReader(0)
objKBforPostInformation.id = myReader(0)
End If
If Not IsDBNull(myReader(1)) Then
objKB.cb_id = myReader(1)
objKBforPostInformation.cb_id = myReader(1)
End If
If Not IsDBNull(myReader(2)) Then
objKB.Desc = myReader(2)
objKBforPostInformation.Desc = ""
End If
objKBlist.Add(objKB)
objKBlist.Add(objKBforPostInformation)
End While
cnn.Close()
gvDemo.DataSource = objKBlist
gvDemo.DataBind()
End Sub
Protected Sub gvDemo_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvDemo.PageIndexChanging
gvDemo.PageIndex = e.NewPageIndex
fillGrid()
End Sub
Protected Sub gvDemo_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvDemo.RowCommand
Select Case e.CommandName
Case "KBEDIT"
Response.Write("select")
Case "KBPOST"
Response.Redirect("~/KB.aspx?id=" & e.CommandArgument & "&op=AddPost")
End Select
End Sub
Protected Sub gvDemo_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvDemo.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim btnEditButton As LinkButton = CType(e.Row.FindControl("btnEdit"), LinkButton)
Dim btnAddPostButton As LinkButton = CType(e.Row.FindControl("btnAddPost"), LinkButton)
If e.Row.Cells(0).Text = "" Or e.Row.Cells(0).Text = " " Then
btnEditButton.Visible = False
btnAddPostButton.Visible = True
Else
e.Row.Cells(0).Text = HttpUtility.HtmlDecode(e.Row.Cells(0).Text)
If Session("userDetails") IsNot Nothing Then
btnEditButton.Visible = True
Else
btnEditButton.Visible = False
End If
btnAddPostButton.Visible = False
End If
End If
End Sub
Protected Sub btnCancle_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancle.Click
Response.Redirect("~/KB.aspx")
End Sub
Protected Sub ddlcategory_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlcategory.SelectedIndexChanged
fillsubcategory(ddlcategory.SelectedItem.Value)
End Sub
Protected Sub btnAddPost_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAddPost.Click
If txtAddPost.Text = "" Then
RequiredFieldValidator1.IsValid = False
Else
Dim cmd As New OleDbCommand
Dim dtTable As New DataTable
Dim query As String
query = "INSERT into KB (CTID,[Desc]) Values(" & ddlsubcategory.SelectedItem.Value & ",'" & txtAddPost.Text & "');"
cmd = New OleDb.OleDbCommand(query, cnn)
cmd.CommandType = CommandType.Text
cmd.CommandText = query
cnn.Open()
Using cnn
cmd.ExecuteNonQuery()
End Using
cnn.Close()
Response.Redirect("~/KB.aspx")
End If
End Sub
End Class