Problem updating database from inside an IFRAME

I'm kinda new to .net development so excuse med if this is silly question. I have an aspx page which contains a DataList that gets values from an sql server. Based on these values I am going to show a new aspx page which contains a datagrid and do some database operations. I initially displayed the new datagrid in a pop up window and it all worked fine! However due to design issues I now have to display the aspx page/grid inside an <IFRAME> on the same page which I show/hide based on a button click. This all works!
The real problem is that the database operation that is supposed to happen inside the IFRAME doesn't work.
The button event of this grid don't seem to fire for some reason. When i press the button everything seems  
to be working correctly and no errors are showing, but the updates doesn't appear in the database?
Is this because the grid is inside an IFRAME? Is it at all possible to do this way?  

Any suggestions would be greatly appriciated!

<CODE>

//this is the page that contains the IFRAME
<asp:DataList id="DataList1" Width="100%" Runat="server"
OnItemCommand="DataList1_ItemCommand"
OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>                                          
      <table border="1" cellpadding="0" cellspacing="0" width="100%">
      <tr>
      <td align="left" width="10%">
      <asp:Label ID="Label2" Runat="Server" Text='<%# Container.DataItem("CompLinkID") %>' ></asp:Label>
      </td>
      <td align="left" width="10%">
      <%# Container.DataItem("CompName") %>
      </td>
      <td align="left" width="50%">
      <asp:LinkButton ID="LinkButton1" Runat="server" CommandName="showorders" Text='<%# Container.DataItem("DefaultProductText") %>' ></asp:LinkButton>
      </td>
      <td align="left" width="10%">
      <asp:TextBox id="Quantity" runat="server" Columns="4" MaxLength="3" Text='<%# DataBinder.Eval(Container.DataItem, "DefaultQuantity") %>' width="40px" />
      </td>
      <td align="left" width="10%">
      <%# Container.DataItem("strMfree") %>
      </td>
      <td align="right" width="10%">
      <%# Container.DataItem("strSalesprice") %>
      </td>
      </tr>
      </table>
      <asp:Panel ID="products" Runat="server" Width="100%">
      <iframe id="iframe1" width="100%" src="prodlisting.aspx?id=<%# Container.DataItem("CompLinkID") %>"</iframe>
      </asp:Panel>
</ItemTemplate>
</asp:DataList>

//the page that is diplayed inside the IFRAME

Sub Page_Load(obj As Object, E As EventArgs)
    ...databinding code for the grid
End Sub

Sub DataGrid1_Update(obj as object, e as DataGridCommandEventArgs)
      If e.commandname="update" then
      dim objConn As New SqlConnection(ConfigurationSettings.AppSettings.Get("DbConn"))
      
      Dim intCompLinkID as Integer = Request.QueryString("id")
      
      Dim strProdNumber as String = CType(e.Item.Cells(0).Controls(1), Label).Text
      Dim strProdText as String = CType(e.Item.Cells(1).Controls(1), Label).Text
                        
      'Update statement
      Dim strUpdate as String = _
      "UPDATE tblCompLink SET DefaultProductText = @DefaultProductText, DefaultProductNumber = @DefaultProductNumber WHERE CompLinkID =" & intCompLinkID

      Dim myCommand as SqlCommand = new SqlCommand(strUpdate, objConn)
      myCommand.CommandType = CommandType.Text

      ' Add Parameters to the SQL query
      Dim parameterLevel1 as SqlParameter = _
                new SqlParameter("@DefaultProductNumber", SqlDbType.varchar, 20)
      parameterLevel1.Value = strProdNumber
      myCommand.Parameters.Add(parameterLevel1)

      Dim parameterLevel2 as SqlParameter = _
                new SqlParameter("@DefaultProductText", SqlDbType.varchar, 100)
      parameterLevel2.Value = strProdText
      myCommand.Parameters.Add(parameterLevel2)

      try
      objConn.Open()
      myCommand.ExecuteNonQuery()
      catch sqlerr as SQLException
      Throw sqlerr'Message.text="SQLError# =" & sqlerr.Number & ", SQL Msg=" & sqlerr.Message
      finally
      objConn.Close()
      end try
      End if
            
End sub

</script>
</head>
<body class="bodyspacer">
            <form id="Form1" method="post" runat="server">
                  <asp:literal id="output" runat="server" />
                  <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Width="100%"
                  OnUpdateCommand="DataGrid1_Update">
                  <Columns>
                        <asp:TemplateColumn HeaderText="Id">
                        <ItemTemplate>
                        <asp:Label ID="lblIT" Runat="server" Text='<%# Container.DataItem("strIT") %>' />
                        </ItemTemplate>
                        </asp:TemplateColumn>
                        <asp:TemplateColumn HeaderText="RBProdukt">
                        <ItemTemplate>
                        <asp:Label ID="lblTEXT" Runat="server" Text='<%# Container.DataItem("strTEXT") %>' />
                        </ItemTemplate>
                        </asp:TemplateColumn>
                        <asp:TemplateColumn HeaderText="Mfr">
                        <ItemTemplate>
                        <asp:Label ID="lblMFR" Runat="server" Text='<%# Container.DataItem("strMFR") %>' />
                        </ItemTemplate>
                        </asp:TemplateColumn>
                        <asp:TemplateColumn HeaderText="Pris">
                        <ItemTemplate>
                        <asp:Label ID="lblQty" Runat="server" Text='<%# Container.DataItem("strPrice") %>' />
                        </ItemTemplate>
                        </asp:TemplateColumn>
                        <asp:TemplateColumn>
                        <ItemTemplate>
                        <asp:ImageButton ID="btnUpdate" CommandName="Update" ImageAlign="AbsMiddle" ImageUrl="images/icon_plus.gif" Runat="server"  />
                        </ItemTemplate>
                        </asp:TemplateColumn>
                  </Columns>
                  </asp:DataGrid>
            </form>
      </body>
</html>

</CODE>
EspenPAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

rovermCommented:
Yes, it's because the grid is in an IFRAME.
The postback is fired on Form1 (or whatever you renamed it to). This could be the error.

If you only want to show/hide the datagrid the you could use a scrollable DIV.
The DIV will be rendered on the main page so that the postback will work ok:

<DIV id='scrolldiv' name='scrolldiv' class='scrolldiv' nowrap style='OVERFLOW-Y:auto; OVERFLOW-X:auto'>
    ...insert your code here
</DIV>

D'Mzz!
RoverM

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Bob LearnedCommented:
No comment has been added lately, so it's time to clean up this TA.
I will leave the following recommendation for this question in the Cleanup topic area:

Accept: roverm {http:#9809234}

Please leave any comments here within the next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!

TheLearnedOne
EE Cleanup Volunteer
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.