<%@ Register Src="wucAddressType.ascx" TagPrefix="uc" TagName="AddressType" %>
<%@ Register Src="UpdatePanelExplanation.ascx" TagPrefix="uc" TagName="Explanation" %>
<%@ Register Src="wucCity.ascx" TagPrefix="uc" TagName="City" %>
<%@ Page Language="C#" MasterPageFile="~/Categories/WEBSWAPP.Master" AutoEventWireup="true" %>
<script runat="server">
protected void LinqDataSource1_Inserted(object sender, LinqDataSourceStatusEventArgs e)
{
if (e.Exception == null)
{
WEBSWAPP.Website.Data.Address address = e.Result as WEBSWAPP.Website.Data.Address;
if (address != null)
{
LinqDataSource1.WhereParameters["Id"].DefaultValue = address.Id.ToString();
}
}
}
protected void TemplatePagerField_OnPagerCommand(object sender, DataPagerCommandEventArgs e)
{
// Check which button raised the event
switch (e.CommandName)
{
case "Reset":
LinqDataSource1.WhereParameters["Id"].DefaultValue = "0";
break;
}
}
protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message + "<br/>" + e.Exception.StackTrace;
}
protected void lvAddress_ItemCommand(object sender, ListViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "ThrowException":
throw new Exception("An error during update has been raised to test the asynchoronous Postback error handling mechanism");
break;
}
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError"
AllowCustomErrorsRedirect="false">
</asp:ScriptManager>
<uc:Explanation ID="Explanation1" runat="server"></uc:Explanation>
<asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="WEBSWAPP.Website.Data.SamplesDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True" TableName="Addresses"
OnInserted="LinqDataSource1_Inserted" Where="Id == (@Id==0?Id:@Id)">
<WhereParameters>
<asp:Parameter Name="Id" DefaultValue="0" Type="Int32" />
</WhereParameters>
</asp:LinqDataSource>
<h2>
AJAX UpdatePanel and AJAX client-side event handling</h2>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="lblStatus" runat="server"></asp:Label>
<asp:ListView ID="lvAddress" runat="server" DataKeyNames="Id,RecordVersion" DataSourceID="LinqDataSource1"
InsertItemPosition="LastItem" OnItemCommand="lvAddress_ItemCommand">
<ItemTemplate>
<div class="halfWindowPanel left">
<span class="titleLabel">Suite#:</span>
<asp:Label ID="lblSuiteNumber" runat="server" Text='<%# Eval("SuiteNumber") %>' />
<br />
<span class="titleLabel">Address Line 1:</span>
<asp:Label ID="txtAddressLine1" runat="server" Text='<%# Eval("AddressLine1") %>' />
<br />
<span class="titleLabel">Address Line 2:</span>
<asp:Label ID="AddressLine2Label" runat="server" Text='<%# Eval("AddressLine2") %>' />
<br />
<span class="titleLabel">Location:</span>
<asp:Label ID="txtCity" runat="server" Text='<%# (((WEBSWAPP.Website.Data.Location)Eval("Location")).Name) + ", " +
((WEBSWAPP.Website.Data.Location)Eval("Location")).Location1.Name + ", " +
((WEBSWAPP.Website.Data.Location)((WEBSWAPP.Website.Data.Location)Eval("Location")).Location1).Location1.Name%>' />
<br />
<span class="titleLabel">Postal Code:</span>
<asp:Label ID="txtPostalCode" runat="server" Text='<%# Eval("PostalCode") %>' />
<br />
<span class="titleLabel">Address Type:</span>
<asp:Label ID="txtAddressType" runat="server" Text='<%# ((WEBSWAPP.Website.Data.AddressType)Eval("AddressType")).Name %>' />
<div class="commandBar">
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Are you sure you want to delete this record');" />
<asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" />
</div>
</div>
</ItemTemplate>
<EditItemTemplate>
<div id="itemPanel" runat="server" class="halfWindowPanel left">
<h3>
Edit contact addresses</h3>
<span class="titleLabel">Suite#:</span>
<asp:TextBox ID="txtSuiteNumber" runat="server" Text='<%# Bind("SuiteNumber") %>' />
<br />
<span class="titleLabel">Address Line 1:</span>
<asp:TextBox ID="txtAddressLine1" runat="server" Text='<%# Bind("AddressLine1") %>' />
<asp:RequiredFieldValidator ID="rfvAddressLine1" runat="server" ErrorMessage="You must enter an address line to save the record"
Text="*" ValidationGroup="EditAddress" ControlToValidate="txtAddressLine1"></asp:RequiredFieldValidator>
<br />
<span class="titleLabel">Address Line 2:</span>
<asp:TextBox ID="AddressLine2Label" runat="server" Text='<%# Bind("AddressLine2") %>' />
<br />
<span class="titleLabel">Location:</span><br />
<uc:City runat="server" ID="ucCity" CityId='<%#Bind("CityId") %>' />
<br />
<span class="titleLabel">Postal Code:</span>
<asp:TextBox ID="txtPostalCode" runat="server" Text='<%# Bind("PostalCode") %>' />
<br />
<span class="titleLabel">Address Type:</span>
<uc:AddressType runat="server" ID="ucAddressType" AddressTypeId='<%#Bind("AddressTypeId") %>' />
<div class="commandBar">
<asp:Button ID="UpdateButton" runat="server" ValidationGroup="EditAddress" CommandName="Update"
Text="Update" />
<asp:Button ID="CancelButton" runat="server" CausesValidation="false" CommandName="Cancel"
Text="Cancel" />
<asp:Button ID="ThrowExpButton" runat="server" CausesValidation="true" CommandName="ThrowException"
Text="Throw An Exception" />
</div>
</div>
</EditItemTemplate>
<EmptyDataTemplate>
<div class="halfWindowPanel left">
<p>
No data was returned.</p>
</div>
</EmptyDataTemplate>
<InsertItemTemplate>
<div id="itemPanel" runat="server" class="halfWindowPanel right white">
<span class="caption">Insert new contact address</span>
<br />
<span class="titleLabel">Suite#:</span>
<asp:TextBox ID="txtSuiteNumber" runat="server" Text='<%# Bind("SuiteNumber") %>' />
<br />
<span class="titleLabel">Address Line 1:</span>
<asp:TextBox ID="txtAddressLine1" runat="server" Text='<%# Bind("AddressLine1") %>' />
<asp:RequiredFieldValidator ID="rfvAddressLine1" runat="server" ErrorMessage="You must enter an address line to save the record"
Text="*" ValidationGroup="InsertAddress" ControlToValidate="txtAddressLine1"></asp:RequiredFieldValidator>
<br />
<span class="titleLabel">Address Line 2:</span>
<asp:TextBox ID="AddressLine2Label" runat="server" Text='<%# Bind("AddressLine2") %>' />
<br />
<span class="titleLabel">Location:</span><br />
<uc:City runat="server" ID="ucCity" CityId='<%#Bind("CityId") %>' />
<br />
<span class="titleLabel">Postal Code:</span>
<asp:TextBox ID="txtPostalCode" runat="server" Text='<%# Bind("PostalCode") %>' />
<br />
<span class="titleLabel">Address Type:</span>
<uc:AddressType runat="server" ID="ucAddressType" AddressTypeId='<%#Bind("AddressTypeId") %>' />
<br />
<div class="commandBar">
<asp:Button ID="InsertButton" runat="server" ValidationGroup="InsertAddress" CommandName="Insert"
Text="Insert" />
<asp:Button ID="CancelButton" runat="server" CausesValidation="false" CommandName="Cancel"
Text="Clear" />
<br />
</div>
</div>
</InsertItemTemplate>
<LayoutTemplate>
<div id="itemPlaceholder" runat="server">
</div>
</LayoutTemplate>
</asp:ListView>
<div class="pagerStyle">
<asp:DataPager ID="DataPager1" runat="server" PageSize="1" PagedControlID="lvAddress">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" />
<asp:TemplatePagerField OnPagerCommand="TemplatePagerField_OnPagerCommand">
<PagerTemplate>
<asp:Button ID="btnReset" runat="server" Text="Reset" CommandName="Reset" />
</PagerTemplate>
</asp:TemplatePagerField>
</Fields>
</asp:DataPager>
</div>
<asp:ValidationSummary runat="server" ID="valSumm" ValidationGroup="EditAddress"
ShowSummary="false" ShowMessageBox="true" />
<asp:ValidationSummary runat="server" ID="ValidationSummary1" ValidationGroup="InsertAddress"
ShowSummary="false" ShowMessageBox="true" />
<span id="lblStatus" style="background-color: Yellow;"></span>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(prm_beginRequest);
prm.add_endRequest(prm_endRequest);
function prm_beginRequest(sender, args) {
var button = args.get_postBackElement();
button.disabled = true;
}
function prm_endRequest(sender, args) {
//alert("prm_endRequest");
var lblStatus = $get("lblStatus");
if (args.get_error() != null) {
lblStatus.innerHTML = args.get_error().message;
args.set_errorHandled(true);
}
}
</script>
</asp:Content>