| Home | Forums | Reviews | Guides | Newsgroups | Register | Search |
![]() |
| Thread Tools |
| Thanks |
|
|
|
| |
|
Thanks
Guest
Posts: n/a
|
I hate it when I figure things out after writing a lengthy post!
Setting the table's EnableViewState property to false rectified the problem. Thanks ------------------------------------------------------------------------ "Thanks" <> wrote in message news:%... > I have a routine that is called on Page_Init. It retrieves folder records > from a database which I display as Link Buttons in a table cell. I set the > table cell's bgcolor to a default color (say black for example). I am > dynamically creating the LinkButton controls and adding them into the table > cell and I've also hooked up an event handler for each LinkButton's Click > event. This all works fine. > > Now in the Link Button's Click event handler, I set the background of the > LinkButton's parent (which is the table cell I initially color Black) to > white. This too works fine. My problem occurs when I click another > LinkButton. The table cell it resides also turns white, but the previous one > doesn't restore back to black. Can someone help? I've posted the code below. > I figured that the click would cause a trip to the server, which would call > page_init which inturn would call DisplayFolders which would set the table > cell to black. > > Imports System.Data > Imports System.Data.SqlClient > Imports System.Web.UI.WebControls > > Public Class StoredProcedures : Inherits System.Web.UI.Page > > #Region " Variable Declarations " > > Private SelectedFolder As String = "" > Private designerPlaceholderDeclaration As System.Object > Protected WithEvents Form1 As System.Web.UI.HtmlControls.HtmlForm > Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox > Protected WithEvents FolderList As > System.Web.UI.HtmlControls.HtmlTableCell > Protected WithEvents FolderContents As > System.Web.UI.HtmlControls.HtmlTableCell > > Private ConnectionString As String = "Data Source=localhost;" & _ > "Initial Catalog=Yahoo;" & _ > "User Id=sa;" & _ > "Password=lvteopeh;" & _ > "Connect Timeout=15;" & _ > "Network Library=dbmssocn;" > > #End Region > > #Region " Web Form Designer Generated Code " > > 'This call is required by the Web Form Designer. > <System.Diagnostics.DebuggerStepThrough()> _ > Private Sub InitializeComponent() > > End Sub > > Private Sub Page_Init(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Init > InitializeComponent() > > End Sub > > Private Sub Page_Load(ByVal sender As System.Object, ByVal e As > System.EventArgs) Handles MyBase.Load > DisplayFolders() > End Sub > > #End Region > > #Region " Methods / Properties " > > Public Sub DisplayFolders() > > ' Declarations. > Dim ds As DataSet > Dim cm As SqlCommand > Dim cn As SqlConnection > Dim da As SqlDataAdapter > > Dim intFolderCount As Long > > ' Initialization. > ds = New DataSet > da = New SqlDataAdapter > cn = New SqlConnection(ConnectionString) > cm = New SqlCommand("GetFolders", cn) > > ' ************************************************** > ' Setup the command object (Type & Parameters) > ' ************************************************** > With cm > .CommandType = CommandType.StoredProcedure > .Parameters.Add("@UserID", SqlDbType.Int).Direction = > ParameterDirection.Input > .Parameters.Add("@FolderCount", SqlDbType.Int).Direction = > ParameterDirection.Output > .Parameters.Add("@Return_Value", SqlDbType.Int).Direction = > ParameterDirection.ReturnValue > .Parameters("@UserID").Value = 2 > End With > > ' Set the command to execute to the stored procedure command object. > da.SelectCommand = cm > > ' Fill our dataset and place the results into a temporary table > namespace, "Results" > da.Fill(ds, "Results") > > ' ************************************************** > ' Create the table and display the folders. > ' ************************************************** > CreateFolderTable(ds) > > cn.Close() > ds.Dispose() > da.Dispose() > cn.Dispose() > cm.Dispose() > > End Sub > > Public Sub DisplayFolderContents(ByVal FolderID As Integer) > > ' Declarations. > Dim ds As DataSet > Dim cm As SqlCommand > Dim cn As SqlConnection > Dim da As SqlDataAdapter > > Dim intFolderCount As Long > > ' Initialization. > ds = New DataSet > da = New SqlDataAdapter > cn = New SqlConnection(ConnectionString) > cm = New SqlCommand("GetNotes", cn) > > ' ************************************************** > ' Setup the command object (Type & Parameters) > ' ************************************************** > With cm > .CommandType = CommandType.StoredProcedure > .Parameters.Add("@intUser", SqlDbType.Int).Direction = > ParameterDirection.Input > .Parameters.Add("@intFolder", SqlDbType.Int).Direction = > ParameterDirection.Input > .Parameters.Add("@intNotesCount", SqlDbType.Int).Direction = > ParameterDirection.Output > .Parameters.Add("@Return_Value", SqlDbType.Int).Direction = > ParameterDirection.ReturnValue > .Parameters("@intUser").Value = 1 > .Parameters("@intFolder").Value = 1 > End With > > ' Set the command to execute to the stored procedure command object. > da.SelectCommand = cm > > ' Fill our dataset and place the results into a temporary table > namespace, "Results" > da.Fill(ds, "Results") > > ' ************************************************** > ' Create the table and display the folder's notes. > ' ************************************************** > CreateFolderContentsTable(ds) > > cn.Close() > ds.Dispose() > da.Dispose() > cn.Dispose() > cm.Dispose() > > End Sub > > Private Sub CreateFolderTable(ByRef ds As DataSet) > > Dim dr As DataRow > Dim dt As DataTable > Dim lnk As LinkButton > Dim tbl As New HtmlTable > Dim intFolderCount As Integer > > ' Get the number of folders returned. > intFolderCount = ds.Tables(0).Rows.Count() > > ' Setup the table object properties. > With tbl > .Width = "200" > .CellSpacing = "1" > .CellPadding = "1" > End With > > ' Create an "All" folder for each user. > CreateFolderRow(tbl, -1, "All") > > ' If there were rows, display the folders. > If intFolderCount > 0 Then > > ' Get a reference to the results table in the dataset. > dt = ds.Tables(0) > > ' Loop through each row in the dataset and display it to page. > For Each dr In dt.Rows > > CreateFolderRow(tbl, CType(dr(0), Integer), CType(dr(1), > String)) > > Next > > ' Now, add this table to the table cell we've designated to hold > the folders table. > FolderList.Controls.Add(tbl) > > End If > > dr = Nothing > dt = Nothing > tbl = Nothing > > End Sub > > Private Sub CreateFolderContentsTable(ByRef ds As DataSet) > > Dim dr As DataRow > Dim dt As DataTable > Dim lnk As LinkButton > Dim tr1 As HtmlTableRow > Dim tc1 As HtmlTableCell > Dim tc2 As HtmlTableCell > Dim tbl As New HtmlTable > Dim intFolderCount As Integer > > ' Get the number of folders returned. > intFolderCount = ds.Tables(0).Rows.Count() > > ' If there were rows, display the folders. > If intFolderCount > 0 Then > > ' Get a reference to the results table in the dataset. > dt = ds.Tables(0) > > With tbl > .Width = "200" > .CellSpacing = "1" > .CellPadding = "1" > End With > > ' Loop through each row in the dataset and display it to page. > For Each dr In dt.Rows > > tr1 = New HtmlTableRow > tc1 = New HtmlTableCell > tc2 = New HtmlTableCell > > ' Created a padded cell to give the folder list a padded > feel. > With tc1 > .Width = "20" > .Align = "right" > .Controls.Add(New LiteralControl(" ")) > End With > > ' Create a new link button. > lnk = New LinkButton > > ' Add a property to hold the SQL ID of the folder. > lnk.Attributes.Add("fid", Trim(dr(0))) > lnk.ForeColor = Color.Black > > ' Add a Click event handler. > AddHandler lnk.Click, AddressOf FolderItem_Click > > ' Set the text to be the folder's name. > lnk.Text = Trim(dr(1)) > > ' Display the link. > With tc2 > .Width = "180" > .Align = "left" > .Controls.Add(lnk) > .Style.Add("font-family", "verdana") > .Style.Add("font-size", "10px") > End With > > ' Add the cell to the table row. > With tr1 > .Cells.Add(tc1) > .Cells.Add(tc2) > End With > > ' Add the table row to the table. > tbl.Rows.Add(tr1) > > Next > > ' Now, add this table to the table cell we've designated to hold > the folders table. > FolderList.Controls.Add(tbl) > > Else > > tr1 = New HtmlTableRow > tc1 = New HtmlTableCell > > ' We want to display one row with "No Folders". > With tc1 > .InnerHtml = "No Folders" > .Width = 200 > End With > > ' Add the cell to the table row. > tr1.Cells.Add(tc1) > > ' Add the table row to the table. > tbl.Rows.Add(tr1) > > End If > > tr1 = Nothing > tc1 = Nothing > tc2 = Nothing > tbl = Nothing > > ' Clean up our table iteration objects. > dr = Nothing > dt = Nothing > > End Sub > > Private Function CreateLinkButton(ByVal ID As Integer, ByVal Text As > String) As Control > > Dim lnk As LinkButton > > ' Create a new link button. > lnk = New LinkButton > > ' Add a property to hold the SQL ID of the folder. > lnk.Attributes.Add("fid", ID) > > ' Set the text for the item black. > lnk.ForeColor = Color.Black > > ' Set the text to be the folder's name. > lnk.Text = Text > > Return lnk > > End Function > > Private Sub CreateFolderRow(ByRef tbl As HtmlTable, ByVal ID As Integer, > ByVal Text As String) > > Dim tr1 As HtmlTableRow > Dim tc1 As HtmlTableCell > Dim tc2 As HtmlTableCell > Dim lnk As LinkButton > > tr1 = New HtmlTableRow > tc1 = New HtmlTableCell > tc2 = New HtmlTableCell > > ' Created a padded cell to give the folder list a padded feel. > With tc1 > .Width = "20" > .Align = "right" > .BgColor = "#d5d0cc" > .Controls.Add(New LiteralControl(" ")) > If ID.ToString = SelectedFolder Then .BgColor = "#FFFFFF" > End With > > ' Display the link. > With tc2 > > .Width = "180" > .Align = "left" > .BgColor = "#d5d0cc" > .Style.Add("font-size", "10px") > .Style.Add("font-family", "verdana") > > ' Create a link button for this folder. > lnk = CreateLinkButton(ID, Text) > > ' Hook up the plumbing so we can handle click events. > AddHandler lnk.Click, AddressOf FolderItem_Click > > ' Add the link button to the table's controls collection. > .Controls.Add(lnk) > > ' Change the background of the item if this is the selected > folder. > If ID.ToString = SelectedFolder Then .BgColor = "#FFFFFF" > > End With > > ' Add the cell to the table row. > With tr1 > .Cells.Add(tc1) > .Cells.Add(tc2) > End With > > ' Add the table row to the table. > tbl.Rows.Add(tr1) > > tr1 = Nothing > tc1 = Nothing > tc2 = Nothing > > End Sub > > #End Region > > > #Region " Events " > > Private Sub FolderItem_Click(ByVal sender As Object, ByVal e As > System.EventArgs) > > Dim strID As String = "" > Dim lb As LinkButton = CType(sender, LinkButton) > > ' Get the FID attribute of the folder link button. > strID = lb.Attributes.Item("FID").ToString() > > Dim tc As HtmlTableCell > tc = lb.Parent > If Not (tc Is Nothing) Then tc.BgColor = "#ffffff" > > > ' Set the selected folder. > SelectedFolder = strID > > ' If the ID is numeric, display the folder's contents. > If IsNumeric(strID) Then DisplayFolderContents(CType(strID, > Integer)) > > End Sub > > #End Region > > End Class > > |
|
|
|
|
|||
|
|||
| Thanks |
|
|
|
| |
![]() |
| Thread Tools | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| How to change a table cell's background color? | HB | ASP .Net | 4 | 05-07-2006 08:52 PM |
| How to set cell background based on cell value when datagrid is displayed | RJ | ASP .Net Datagrid Control | 1 | 02-17-2005 09:37 PM |
| Q: Automatically Changing Background Color of a Table Cell? | Arthur Shapiro | Javascript | 29 | 01-02-2005 12:15 AM |
| Problem with setting background color alternating item in datalist to a certain color | fig000 | ASP .Net Web Controls | 0 | 09-06-2004 06:51 PM |
| How can I use onclick to change a table cell background color | Michael | Javascript | 1 | 05-15-2004 04:16 PM |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc..
SEO by vBSEO ©2010, Crawlability, Inc. |




