By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,967 Members | 1,596 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,967 IT Pros & Developers. It's quick & easy.

Preserve Data to Edit on DataGrid When Filtering

P: n/a
Hello All,

I have a webpage that has two dropdown listboxes. Based on what is selected
in these dropdown listboxes, it filters a DataGrid . That works fine.

In the DataGrid , when I go to edit a row, I change the textbox (or other
control), click Update, but it doesn't save my data. I then did this...

In Page_Load, I added code to filter the DataGrid only when it was Not
Page.IsPostBack. Then the editing/updating of the DataGrid data works fine.
But, of course, I lose the ability to filter the DataGrid.

Obviously the problem is with the Postback. But how am I able to have both
the postback and the editing available simultaneously?

I had heard that I should stay away from Session variables, but that seems
that it might work here. Is there another way to do this without Session
variables?

Thank you for the help.
Jan 5 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
You could always do ViewState["FilterVar1"] = "accounting" or something
similar if you didn't want to do session. Some code might help as your
problem could be in several areas (i'm guessing it's a re-binding problem).

-Darren Kopp
http://blog.secudocs.com

"Gummy" <gu***@nowhere.com> wrote in message
news:11*************@corp.supernews.com...
Hello All,

I have a webpage that has two dropdown listboxes. Based on what is
selected
in these dropdown listboxes, it filters a DataGrid . That works fine.

In the DataGrid , when I go to edit a row, I change the textbox (or other
control), click Update, but it doesn't save my data. I then did this...

In Page_Load, I added code to filter the DataGrid only when it was Not
Page.IsPostBack. Then the editing/updating of the DataGrid data works
fine.
But, of course, I lose the ability to filter the DataGrid.

Obviously the problem is with the Postback. But how am I able to have both
the postback and the editing available simultaneously?

I had heard that I should stay away from Session variables, but that seems
that it might work here. Is there another way to do this without Session
variables?

Thank you for the help.

Jan 5 '06 #2

P: n/a
Darren,

Thank you for the information. I have to go look at exactly what ViewState
does (I'm a newbie).

If you want, here's the code. I hope it helps and isn't too messy. As an
aside, I am getting very random "Object reference not set to an instance of
an object" error that I am having problem tracking down. If you see
something, please let me know.

Thank you so much for the help,

----------------------------------------
Public Class CreateParent
Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub
Protected WithEvents chkboxMaxDate As System.Web.UI.WebControls.CheckBox
Protected WithEvents dgParents As System.Web.UI.WebControls.DataGrid

'NOTE: The following placeholder declaration is required by the Web Form
Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region
Protected WithEvents ucStructureRollupDropDown As New
SelectTypeDropDownBoxes
Protected WithEvents HeaderTab1 As New HeaderTab
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not Page.IsPostBack Then

FillDataGrid_Parent_Filter(ucStructureRollupDropDo wn.StructureValue,
ucStructureRollupDropDown.RollupValue)
End If

End Sub
Private Sub FillDataGrid_Parent()
Dim strConn As String
Dim strSQL As String
Dim dt As New RobData.DataTransfer
Dim dv As DataView
Try
strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")

' strSQL = String.Format("SELECT * from RLUP_PARENT")
strSQL = String.Format("select a.*, rt.rollupdesc,
st.structuredesc from rlup_parent a" & _
" join rlup_rolluptype rt on a.rollupid = rt.rollupid " & _
" join rlup_structuretype st on a.structureid = st.structureid " &
_
" order by a.parentdesc, a.effdt desc")

dv = dt.GetDataSet(strSQL, strConn).Tables(0).DefaultView

dgParents.DataSource = dv 'dt.GetDataSet(strSQL, strConn)

' TempDataView = dt.GetDataSet(strSQL,
strConn).Tables(0).DefaultView

dgParents.DataBind()

Catch ex As Exception
Throw ex

End Try

End Sub

Private Sub FillDataGrid_Parent_Filter(ByVal _structureID As String,
ByVal _rollupID As String)

Dim strConn As String
Dim strSQL As String
Dim dt As RobData.DataTransfer

Try
strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")
strSQL = String.Format("select a.*, rt.rollupdesc,
st.structuredesc from rlup_parent a" & _
" join rlup_rolluptype rt on a.rollupid = rt.rollupid " & _
" join rlup_structuretype st on a.structureid = st.structureid
" & _
" where a.structureid Like '{0}%' and a.rollupid like '{1}%' " &
_
" order by a.parentdesc, a.effdt desc", _structureID,
_rollupID)

dgParents.DataSource = dt.GetDataSet(strSQL, strConn)
dgParents.DataBind()

Catch ex As Exception
Throw ex
End Try
End Sub


Private Sub dgParents_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
dgParents.EditCommand
Dim strSQL As String
Dim strConnect As String
Dim strProjectID As String
Dim dtEffectDate As Date

Dim strConn As String
Dim dt As RobData.DataTransfer
Try

'Item that it is going to be edited
dgParents.EditItemIndex = e.Item.ItemIndex
strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")
strSQL = String.Format("select a.*, rt.rollupdesc,
st.structuredesc from rlup_parent a" & _
" join rlup_rolluptype rt on a.rollupid = rt.rollupid " & _
" join rlup_structuretype st on a.structureid = st.structureid
" & _
" order by a.parentdesc, a.effdt desc")
dgParents.DataSource = dt.GetDataSet(strSQL, strConn)
dgParents.DataBind()

Catch ex As Exception
Throw ex

End Try
' Session("AddMode") = False
End Sub

Private Sub dgParents_UpdateCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles
dgParents.UpdateCommand
Dim strSQL As String
Dim strConnect As String
Dim strParentID As String

Dim strParentDesc As String
Dim dtEffectDate As String
Dim strRollupID As String
Dim strStructureID As String

Dim strConn As String
Dim dt As RobData.DataTransfer
Try
With e.Item
strParentID = CType(.Cells(0).Controls(0), TextBox).Text
strParentDesc = CType(.Cells(1).Controls(0), TextBox).Text
dtEffectDate = "2005-DEC-01" ' "to_date('" &
Format(CType(.Cells(2).Controls(0), TextBox).Text(), "yyyy-MMM-dd hh:mm:ss
tt") & "', 'yyyy/mm/dd:hh:mi:ssam')"
strRollupID = CType(.Cells(3).Controls(1),
DropDownList).SelectedItem.Value
strStructureID = CType(.Cells(4).Controls(1),
DropDownList).SelectedItem.Value
End With

strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")
strSQL = String.Format("Update rlup_parent set ParentDesc =
'{0}', EFFDT = '{1}', RollupID = '{2}', structureid = '{3}' where parentid
= '{4}'", strParentDesc, dtEffectDate, strRollupID, strStructureID,
strParentID)
dt.ExecuteSQL(strSQL, strConn)

dgParents.EditItemIndex = -1
FillDataGrid_Parent_Filter(ucStructureRollupDropDo wn.StructureValue,
ucStructureRollupDropDown.RollupValue)

Catch ex As Exception
Throw ex

End Try
End Sub
Private Sub ddlStructure_BindData(ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs)
Try
Dim strConn As String
Dim strSQL As String
Dim dt As New RobData.DataTransfer
Dim drStructure As OleDb.OleDbDataReader
Dim structItem As New ListItem

If e.Item.ItemType = ListItemType.EditItem Then
'Code to get the structure type
strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")
strSQL = String.Format("SELECT * from RLUP_structureType")
drStructure = dt.GetDataReader(strSQL, strConn)
Dim DRV As DataRowView = CType(e.Item.DataItem, DataRowView)

Dim strStructureSelection As String = DRV("structuredesc")

Dim ddlStruct As New DropDownList

ddlStruct = CType(e.Item.FindControl("ddlStructureEdit"),
DropDownList)
Do While drStructure.Read 'Fills the drop down list box
structItem = New
ListItem(drStructure("structuredesc").ToString,
drStructure("structureID").ToString)
ddlStruct.Items.Add(structItem)
Loop
Dim itemStructure As New ListItem

itemStructure =
ddlStruct.Items.FindByText(strStructureSelection)
itemStructure.Selected = True
drStructure.Close()

End If

Catch ex As Exception
Throw ex
End Try
End Sub

Private Sub ddlRollup_BindData(ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs)
Try
If e.Item.ItemType = ListItemType.EditItem Then
Dim strConn As String
Dim strSQL As String
Dim dt As New RobData.DataTransfer
Dim drRollup As OleDb.OleDbDataReader
Dim drStructure As OleDb.OleDbDataReader
Dim rollupItem As New ListItem

'Code to get the rollup type
strConn = dt.OracleConnect("rptpr01", "rptuser", "r00ster")
strSQL = String.Format("SELECT * from RLUP_RollupType")
drRollup = dt.GetDataReader(strSQL, strConn)

Dim DRV As DataRowView = CType(e.Item.DataItem, DataRowView)
Dim strRollupSelection As String = DRV("rollupdesc")

Dim ddlRollup As New DropDownList
ddlRollup = CType(e.Item.FindControl("ddlRollupEdit"),
DropDownList)

Do While drRollup.Read 'Fills the drop down list box
rollupItem = New
ListItem(drRollup("RollupDesc").ToString, drRollup("RollupID").ToString)
ddlRollup.Items.Add(rollupItem)
Loop

Dim item As New ListItem

item = ddlRollup.Items.FindByText(strRollupSelection)
item.Selected = True
drRollup.Close()

End If

Catch ex As Exception
Throw ex
End Try

End Sub

Private Sub dgParents_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.DataGridItemEventArgs) Handles
dgParents.ItemDataBound

Try

If e.Item.ItemType = ListItemType.EditItem Then
ddlStructure_BindData(e)
ddlRollup_BindData(e)
End If

Catch ex As Exception
Throw ex
End Try
End Sub
End Class


"Darren Kopp" <da******************@gmail.com> wrote in message
news:Ob**************@TK2MSFTNGP14.phx.gbl...
You could always do ViewState["FilterVar1"] = "accounting" or something
similar if you didn't want to do session. Some code might help as your
problem could be in several areas (i'm guessing it's a re-binding problem).
-Darren Kopp
http://blog.secudocs.com

"Gummy" <gu***@nowhere.com> wrote in message
news:11*************@corp.supernews.com...
Hello All,

I have a webpage that has two dropdown listboxes. Based on what is
selected
in these dropdown listboxes, it filters a DataGrid . That works fine.

In the DataGrid , when I go to edit a row, I change the textbox (or other control), click Update, but it doesn't save my data. I then did this...

In Page_Load, I added code to filter the DataGrid only when it was Not
Page.IsPostBack. Then the editing/updating of the DataGrid data works
fine.
But, of course, I lose the ability to filter the DataGrid.

Obviously the problem is with the Postback. But how am I able to have both the postback and the editing available simultaneously?

I had heard that I should stay away from Session variables, but that seems that it might work here. Is there another way to do this without Session
variables?

Thank you for the help.


Jan 5 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.