473,396 Members | 1,799 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

A question about form layout

Joe
Hi,

I have a MS Access DB in which a record has just too many fields to be able
to allow users to do inline editing in a datagrid. So I want to display as

First Name: Text box where first name is displayed and can be edited.

Last Name: Text box where last name is displayed and can be edited.

At the end of this list, I want to have two buttons, update and cancel.

Can someone tell me how should I code this page? I am new to asp.net and so
far I ended up using Repeater control only to find after a lot of struggle
that I cannot edit it.

Thanks for you pointers,

Joe

Nov 19 '05 #1
6 1207
SqlConnection myConnection = new SqlConnection("yourConnectionString");
string sqlString = "Update your_table set lastName = '" + txtLastName + "'
where id=1234";
SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Replace the necessary names I used with yours

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:12**********************************@microsof t.com...
Hi,

I have a MS Access DB in which a record has just too many fields to be
able
to allow users to do inline editing in a datagrid. So I want to display
as

First Name: Text box where first name is displayed and can be edited.

Last Name: Text box where last name is displayed and can be edited.

At the end of this list, I want to have two buttons, update and cancel.

Can someone tell me how should I code this page? I am new to asp.net and
so
far I ended up using Repeater control only to find after a lot of struggle
that I cannot edit it.

Thanks for you pointers,

Joe

Nov 19 '05 #2
Ooops.....misunderstood what you want.

Why do you need a repeater? Just use a textbox and button, or are you trying
to add multiple (or update multiple) records at once?

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Curt_C [MVP]" <software_AT_darkfalz.com> wrote in message
news:e9**************@TK2MSFTNGP14.phx.gbl...
SqlConnection myConnection = new SqlConnection("yourConnectionString");
string sqlString = "Update your_table set lastName = '" + txtLastName + "'
where id=1234";
SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Replace the necessary names I used with yours

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:12**********************************@microsof t.com...
Hi,

I have a MS Access DB in which a record has just too many fields to be
able
to allow users to do inline editing in a datagrid. So I want to display
as

First Name: Text box where first name is displayed and can be edited.

Last Name: Text box where last name is displayed and can be edited.

At the end of this list, I want to have two buttons, update and cancel.

Can someone tell me how should I code this page? I am new to asp.net and
so
far I ended up using Repeater control only to find after a lot of
struggle
that I cannot edit it.

Thanks for you pointers,

Joe


Nov 19 '05 #3
Joe
I don't think you understood my question or may be I didn't phrase my
question correctly.

Joe

"Curt_C [MVP]" wrote:
SqlConnection myConnection = new SqlConnection("yourConnectionString");
string sqlString = "Update your_table set lastName = '" + txtLastName + "'
where id=1234";
SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Replace the necessary names I used with yours

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:12**********************************@microsof t.com...
Hi,

I have a MS Access DB in which a record has just too many fields to be
able
to allow users to do inline editing in a datagrid. So I want to display
as

First Name: Text box where first name is displayed and can be edited.

Last Name: Text box where last name is displayed and can be edited.

At the end of this list, I want to have two buttons, update and cancel.

Can someone tell me how should I code this page? I am new to asp.net and
so
far I ended up using Repeater control only to find after a lot of struggle
that I cannot edit it.

Thanks for you pointers,

Joe


Nov 19 '05 #4
Joe
You are correct I do not want to use Repeater control.

Curt, this is what I am doing.

I have pasted my code below. I am able to display the data in
a datagrid. At the bottom of the page there are two buttons “Save Changes”
and “Cancel”. When “Save Changes” button is clicked saveRec function is
called. But for some reason inside saveRec function the value of the textbox
is not visible. The line

Label2.Text = txtFirstName.Text

give an error -- System.NullReferenceException: Object reference not set to
an instance of an object.

I will really appreciate if you can tell me what mistake I am doing. Because
I don't have a clue.

Joe
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!-- #include file=dsn.aspx -->

<script language="VB" runat="server" >

Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
' Save the referrer Url
ViewState("ReferrerUrl") = Request.UrlReferrer.ToString()
BindData()
End If
End Sub

Sub BindData()
dim strsql as string
'check for an id
If Request.QueryString.Item("id") Is Nothing Then
response.redirect("Resultslist.aspx")
Else
strsql="select * from [Results] where [ID]=" &
request.querystring("id")
End If
'Create a connection string
Dim connString as String
connString = getdsn()

'Open a connection
Dim objConnection as OleDbConnection
objConnection = New OleDbConnection(connString)
objConnection.Open()

'Create a command object
Dim objCommand as OleDbCommand
objCommand = New OleDbCommand(strSQL, objConnection)
'Get a datareader
Dim objDataReader as OleDbDataReader
objDataReader =
objCommand.ExecuteReader(CommandBehavior.CloseConn ection)
'Do the DataBinding
myDataGrid.DataSource = objDataReader
myDataGrid.DataBind()

'Close the datareader/db connection
objDataReader.Close()
End Sub

Sub saveRec(Sender As Object, e As System.EventArgs)
'Dim txtFirstName As System.Web.UI.WebControls.TextBox
'Dim txtLastName As System.Web.UI.WebControls.TextBox
'Dim txtCity As System.Web.UI.WebControls.TextBox

dim strSQL as string
'check for an id
If Request.QueryString.Item("id") Is Nothing Then
response.redirect("Resultslist.aspx")
Else
strSQL="Update Results set first_name=@fn, last_name=@ln,
city=@ct where ID=" & request.querystring("id")
End If
'Create a connection string
Dim connString as String
connString = getdsn()

'Open a connection
Dim objConnection as OleDbConnection
objConnection = New OleDbConnection(connString)
objConnection.Open()

'Create a command object
Dim objCommand as OleDbCommand
objCommand = New OleDbCommand(strSQL, objConnection)

objCommand.Parameters.Add("@fn", OleDbType.VarChar, 255)
objCommand.Parameters.Add("@ln", OleDbType.VarChar, 255)
objCommand.Parameters.Add("@ct", OleDbType.VarChar, 255)

objCommand.Parameters("@fn").Value = txtFirstName.Text
objCommand.Parameters("@ln").Value = txtLastName.Text
objCommand.Parameters("@ct").Value = txtCity.Text

Try
Label2.Text = txtFirstName.Text
' Execute the command
'objCommand.ExecuteNonQuery()
'myDataGrid.DataBind()
Catch Ex as Exception
Response.Write("<p><strong>An Error Occurred:</strong> " & Ex.ToString()
& "</p>" & vbCrLf)
Finally
objConnection.Close()

End Try

End Sub

Sub cancel(Sender As Object, e As EventArgs)
Response.Redirect(ViewState("ReferrerUrl").ToStrin g())
End Sub

</script>
<body>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:datagrid id="myDataGrid"
runat="server"
AutoGenerateColumns="False"
width="80%">
<ItemStyle Font-Size="X-Small"></ItemStyle>
<HeaderStyle Font-Size="X-Small" Font-Bold="True" ForeColor="White"
BackColor=""></HeaderStyle>

<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<b>Results detail</b>
</HeaderTemplate>
<ItemTemplate>
<table border="0" Cellpadding="4" Cellspacing="0" Width="80%"
style="FONT-SIZE: 11px; FONT-FAMILY: Verdana, Arial, sans-serif">
<tr><td valign="top" unselectable="on">first_name</td>
<td><asp:TextBox id="txtFirstName" runat="server" Width="109px" Text='<%#
Container.DataItem("first_name")%>' /></td>
</tr>
<tr><td valign="top">last_name</td><td><asp:TextBox id="txtLastName"
runat="server" Width="109px" Text='<%# Container.DataItem("last_name")%>'
/></td></tr>
<tr><td valign="top">city</td><td><asp:TextBox id="txtCity" runat="server"
Width="109px" Text='<%# Container.DataItem("city")%>' /></td></tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
<br />
<asp:Button ID="updateBtn" Runat="server" Text="Save Changes"
onclick="saveRec" />
<asp:Button ID="cancelBtn" Runat="server" Text="Cancel"
onclick="cancel" />
<asp:Label TEXT="" ID="Label2" Runat="Server" />

</form>
</center>
</body>
</html>

"Curt_C [MVP]" wrote:
Ooops.....misunderstood what you want.

Why do you need a repeater? Just use a textbox and button, or are you trying
to add multiple (or update multiple) records at once?

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Curt_C [MVP]" <software_AT_darkfalz.com> wrote in message
news:e9**************@TK2MSFTNGP14.phx.gbl...
SqlConnection myConnection = new SqlConnection("yourConnectionString");
string sqlString = "Update your_table set lastName = '" + txtLastName + "'
where id=1234";
SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Replace the necessary names I used with yours

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:12**********************************@microsof t.com...
Hi,

I have a MS Access DB in which a record has just too many fields to be
able
to allow users to do inline editing in a datagrid. So I want to display
as

First Name: Text box where first name is displayed and can be edited.

Last Name: Text box where last name is displayed and can be edited.

At the end of this list, I want to have two buttons, update and cancel.

Can someone tell me how should I code this page? I am new to asp.net and
so
far I ended up using Repeater control only to find after a lot of
struggle
that I cannot edit it.

Thanks for you pointers,

Joe



Nov 19 '05 #5
It's because the textbox is inside (a child of) the grid/template. You'll
have to call it with a FindControl() or path it down from the parent.

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:B5**********************************@microsof t.com...
You are correct I do not want to use Repeater control.

Curt, this is what I am doing.

I have pasted my code below. I am able to display the data in
a datagrid. At the bottom of the page there are two buttons "Save Changes"
and "Cancel". When "Save Changes" button is clicked saveRec function is
called. But for some reason inside saveRec function the value of the
textbox
is not visible. The line

Label2.Text = txtFirstName.Text

give an error -- System.NullReferenceException: Object reference not set
to
an instance of an object.

I will really appreciate if you can tell me what mistake I am doing.
Because
I don't have a clue.

Joe
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<!-- #include file=dsn.aspx -->

<script language="VB" runat="server" >

Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
' Save the referrer Url
ViewState("ReferrerUrl") = Request.UrlReferrer.ToString()
BindData()
End If
End Sub

Sub BindData()
dim strsql as string
'check for an id
If Request.QueryString.Item("id") Is Nothing Then
response.redirect("Resultslist.aspx")
Else
strsql="select * from [Results] where [ID]=" &
request.querystring("id")
End If
'Create a connection string
Dim connString as String
connString = getdsn()

'Open a connection
Dim objConnection as OleDbConnection
objConnection = New OleDbConnection(connString)
objConnection.Open()

'Create a command object
Dim objCommand as OleDbCommand
objCommand = New OleDbCommand(strSQL, objConnection)
'Get a datareader
Dim objDataReader as OleDbDataReader
objDataReader =
objCommand.ExecuteReader(CommandBehavior.CloseConn ection)
'Do the DataBinding
myDataGrid.DataSource = objDataReader
myDataGrid.DataBind()

'Close the datareader/db connection
objDataReader.Close()
End Sub

Sub saveRec(Sender As Object, e As System.EventArgs)
'Dim txtFirstName As System.Web.UI.WebControls.TextBox
'Dim txtLastName As System.Web.UI.WebControls.TextBox
'Dim txtCity As System.Web.UI.WebControls.TextBox

dim strSQL as string
'check for an id
If Request.QueryString.Item("id") Is Nothing Then
response.redirect("Resultslist.aspx")
Else
strSQL="Update Results set first_name=@fn, last_name=@ln,
city=@ct where ID=" & request.querystring("id")
End If
'Create a connection string
Dim connString as String
connString = getdsn()

'Open a connection
Dim objConnection as OleDbConnection
objConnection = New OleDbConnection(connString)
objConnection.Open()

'Create a command object
Dim objCommand as OleDbCommand
objCommand = New OleDbCommand(strSQL, objConnection)

objCommand.Parameters.Add("@fn", OleDbType.VarChar, 255)
objCommand.Parameters.Add("@ln", OleDbType.VarChar, 255)
objCommand.Parameters.Add("@ct", OleDbType.VarChar, 255)

objCommand.Parameters("@fn").Value = txtFirstName.Text
objCommand.Parameters("@ln").Value = txtLastName.Text
objCommand.Parameters("@ct").Value = txtCity.Text

Try
Label2.Text = txtFirstName.Text
' Execute the command
'objCommand.ExecuteNonQuery()
'myDataGrid.DataBind()
Catch Ex as Exception
Response.Write("<p><strong>An Error Occurred:</strong> " & Ex.ToString()
& "</p>" & vbCrLf)
Finally
objConnection.Close()

End Try

End Sub

Sub cancel(Sender As Object, e As EventArgs)
Response.Redirect(ViewState("ReferrerUrl").ToStrin g())
End Sub

</script>
<body>
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:datagrid id="myDataGrid"
runat="server"
AutoGenerateColumns="False"
width="80%">
<ItemStyle Font-Size="X-Small"></ItemStyle>
<HeaderStyle Font-Size="X-Small" Font-Bold="True" ForeColor="White"
BackColor=""></HeaderStyle>

<Columns>
<asp:TemplateColumn>
<HeaderTemplate>
<b>Results detail</b>
</HeaderTemplate>
<ItemTemplate>
<table border="0" Cellpadding="4" Cellspacing="0" Width="80%"
style="FONT-SIZE: 11px; FONT-FAMILY: Verdana, Arial, sans-serif">
<tr><td valign="top" unselectable="on">first_name</td>
<td><asp:TextBox id="txtFirstName" runat="server" Width="109px" Text='<%#
Container.DataItem("first_name")%>' /></td>
</tr>
<tr><td valign="top">last_name</td><td><asp:TextBox id="txtLastName"
runat="server" Width="109px" Text='<%# Container.DataItem("last_name")%>'
/></td></tr>
<tr><td valign="top">city</td><td><asp:TextBox id="txtCity" runat="server"
Width="109px" Text='<%# Container.DataItem("city")%>' /></td></tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
<br />
<asp:Button ID="updateBtn" Runat="server" Text="Save Changes"
onclick="saveRec" />
<asp:Button ID="cancelBtn" Runat="server" Text="Cancel"
onclick="cancel" />
<asp:Label TEXT="" ID="Label2" Runat="Server" />

</form>
</center>
</body>
</html>

"Curt_C [MVP]" wrote:
Ooops.....misunderstood what you want.

Why do you need a repeater? Just use a textbox and button, or are you
trying
to add multiple (or update multiple) records at once?

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Curt_C [MVP]" <software_AT_darkfalz.com> wrote in message
news:e9**************@TK2MSFTNGP14.phx.gbl...
> SqlConnection myConnection = new SqlConnection("yourConnectionString");
> string sqlString = "Update your_table set lastName = '" + txtLastName +
> "'
> where id=1234";
> SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
> myCommand.CommandType = CommandType.Text;
> myConnection.Open();
> myCommand.ExecuteNonQuery();
>
>
> Replace the necessary names I used with yours
>
> --
> Curt Christianson
> Owner/Lead Developer, DF-Software
> Site: http://www.Darkfalz.com
> Blog: http://blog.Darkfalz.com
>
>
> "Joe" <Jo*@discussions.microsoft.com> wrote in message
> news:12**********************************@microsof t.com...
>> Hi,
>>
>> I have a MS Access DB in which a record has just too many fields to be
>> able
>> to allow users to do inline editing in a datagrid. So I want to
>> display
>> as
>>
>> First Name: Text box where first name is displayed and can be edited.
>>
>> Last Name: Text box where last name is displayed and can be edited.
>>
>> At the end of this list, I want to have two buttons, update and
>> cancel.
>>
>> Can someone tell me how should I code this page? I am new to asp.net
>> and
>> so
>> far I ended up using Repeater control only to find after a lot of
>> struggle
>> that I cannot edit it.
>>
>> Thanks for you pointers,
>>
>> Joe
>>
>
>


Nov 19 '05 #6

Please when you find an answer let us know, I am very interested since I
though the same thing as Curt_C , that your textbox is not in the page's
controls collection but inside a child control.
Good luck!

Alejandro.
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:E0**********************************@microsof t.com...
I don't think you understood my question or may be I didn't phrase my
question correctly.

Joe

"Curt_C [MVP]" wrote:
SqlConnection myConnection = new SqlConnection("yourConnectionString");
string sqlString = "Update your_table set lastName = '" + txtLastName +
"'
where id=1234";
SqlCommand myCommand = new SqlCommand(sqlString, myConnection);
myCommand.CommandType = CommandType.Text;
myConnection.Open();
myCommand.ExecuteNonQuery();
Replace the necessary names I used with yours

--
Curt Christianson
Owner/Lead Developer, DF-Software
Site: http://www.Darkfalz.com
Blog: http://blog.Darkfalz.com
"Joe" <Jo*@discussions.microsoft.com> wrote in message
news:12**********************************@microsof t.com...
> Hi,
>
> I have a MS Access DB in which a record has just too many fields to be
> able
> to allow users to do inline editing in a datagrid. So I want to
> display
> as
>
> First Name: Text box where first name is displayed and can be edited.
>
> Last Name: Text box where last name is displayed and can be edited.
>
> At the end of this list, I want to have two buttons, update and cancel.
>
> Can someone tell me how should I code this page? I am new to asp.net
> and
> so
> far I ended up using Repeater control only to find after a lot of
> struggle
> that I cannot edit it.
>
> Thanks for you pointers,
>
> Joe
>


Nov 19 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Peter | last post by:
For some unknown reason my Form Layout Window has stopped showing a form on it. I can open & close the window, set docking on/off but no form. The right click start-up options are also greyed out....
3
by: Gary Wachs | last post by:
Hi folks, Lots of questions below. Thanks in advance for your help! 1. I go into the query expression builder, I show a lot (like 20 or 30) tables and queries, I create inner joins and left...
2
by: Steve Richter | last post by:
I am spending too much time thinking of nesting tables within tables to get the form layout that I want. a simple example: Sub heading: property text: entry field property text: entry...
10
by: Perry van Kuppeveld | last post by:
Hi, I have a problem with formatting a table including text fields wich can contain up to 255 chars. I need a table with 3 columns: - First column 50 % over the with a rowspan of the total...
22
by: Woody Splawn | last post by:
I am somewhat new to VS.net in general. As a result I am prone to make mistakes. When adding some new feature to a a form it would be nice if I could back it up before trying something that might...
4
by: dunkonu | last post by:
I am trying to create a form that if the form is manually resized, the textbox will get resized proportionally to the form. thank
6
by: fidodido | last post by:
I was asked to do this.... Dynamically move "text1" and "hidden1" into the "form1" ..... Not by creating new elements, but moving the "text1" and "hidden1" elements into the form using javascript,...
2
NeoPa
by: NeoPa | last post by:
CHAPTER 1 - TABLE OF CONTENTS (Including attached database) CHAPTER 2 - INTRODUCTION CHAPTER 3 - TABLE LAYOUT CHAPTER 4 - FORM LAYOUT CHAPTER 5 - FORM MODULE CHAPTER 6 - CODE DISCUSSION (FILTER...
1
by: =?Utf-8?B?RjVGNUY1?= | last post by:
I have created a control by inheriting ToolStripMenuItem that has an image property called LargeImage. ------ public class EventSubMenuItem : ToolStripMenuItem { private Image _largeImage =...
2
by: ravisuguna | last post by:
Hi, I have a php page which has some checkboxes ,textfields and values.If I select a checkbox ,a particular value will be displayed in a textfield.I have a "go"button in the same page.I want the...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development projectplanning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.