<telerik:RadAjaxPanel ID="rap" runat="server" >
<telerik:RadGrid
Skin="WebBlue"
ID="RadGrid1"
runat="server"
GridLines="None"
AllowPaging="True"
AllowSorting="True"
Width="97%"
AutoGenerateColumns="False"
EnableAJAX="true"
ShowStatusBar="true"
>
<MasterTableView GridLines="None" Width="100%" CommandItemDisplay="Top" >
<Columns>
<telerik:GridEditCommandColumn UniqueName="EditCommandColumn" />
<telerik:GridBoundColumn Display="false" HeaderText="Phone" DataField="Phone" />
<telerik:GridBoundColumn Display="false" HeaderText="MobilePhone %>" DataField="MobilePhone" />
<telerik:GridBoundColumn Display="false" HeaderText="Email " DataField="Email" />
<telerik:GridButtonColumn UniqueName="DeleteColumn" CommandName="Delete" Text="Delete" />
</Columns>
<EditFormSettings UserControlName="DependentPersonDossiersEditForm.ascx" EditFormType="WebUserControl">
<EditColumn UniqueName="EditCommandColumn1" />
</EditFormSettings>
</MasterTableView>
</telerik:RadGrid>
</telerik:RadAjaxPanel>
I use a usercontrol for edits, inserts:
...
<
div>
<table frame="void">
<tr>
<td>
<div>
<wwui:Field ID="uiPhoneField" runat="server" LabelFor="uiPhone" Label="Phone">
<telerik:RadTextBox ID="uiPhone" runat="server" />
<asp:CustomValidator
ID="uiPhone_cv"
runat="server"
ErrorMessage="*"
Text="*"
ControlToValidate="uiPhone"
Display="Static"
OnServerValidate="uiPhone_cv_ServerValidate"
/>
</wwui:Field>
<wwui:Field ID="uiMobilePhoneField" runat="server" LabelFor="uiMobilePhone" Label="MobilePhone">
<telerik:RadTextBox ID="uiMobilePhone" runat="server" />
<asp:CustomValidator
ID="uiMobilePhone_cv"
runat="server"
ErrorMessage="*"
Text="*"
ControlToValidate="uiMobilePhone"
Display="Static"
/>
</wwui:Field>
<wwui:Field ID="uiEmailField" runat="server" LabelFor="uiEmail" Label="Email">
<telerik:RadTextBox ID="uiEmail" runat="server" />
<asp:CustomValidator
ID="uiEmail_cv"
runat="server"
ErrorMessage="*"
ControlToValidate="uiEmail"
Display="Static"
/>
</wwui:Field>
</div>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnUpdate" ValidationGroup="DependentPersonDossiersGrid" BackColor="Red" text="Confirm Edit" runat="server" CommandName="Update" Visible="true"></asp:Button>
<asp:Button ID="btnInsert" ValidationGroup="Grid" text="Perform Insert" runat="server" CommandName="PerformInsert" Visible="false"></asp:Button>
<asp:Button ID="btnCancel" Text="Cancel" runat="server" CausesValidation="false" CommandName="Cancel"></asp:Button>
</td>
</tr>
</table>
</div>
...
In the usercontrols codebehind I register javascripts like this:
ClientScriptManager csm = Page.ClientScript;
if ( !csm.IsClientScriptBlockRegistered ( "PhoneFormatValidate" ) )
{
StringBuilder sbphone = new StringBuilder ( 512 );
sbphone.Append (
" <script type='text/javascript' language='javascript'>" );
sbphone.Append (
" function PhoneFormatValidate(source, clientside_args) " );
sbphone.Append (
" { " );
sbphone.Append (
" var phoneStr; " );
sbphone.Append (
" phoneStr = clientside_args.Value;" );
sbphone.Append (
" phoneStr = phoneStr.replace(/\\s+/g, '');" );
sbphone.Append (
" clientside_args.IsValid = true; " );
sbphone.Append (
" if (phoneStr.length > 0) " );
sbphone.Append (
" { " );
sbphone.Append (
" if (!phoneStr.match(/^((\\+(([0-9]){2})\\(([0-9]){2}\\)([0-9]){6})|(([0-9]){8}))$/)) " );
sbphone.Append (
" clientside_args.IsValid = false; " );
sbphone.Append (
" } " );
sbphone.Append (
" } " );
sbphone.Append (
" </script>" );
csm.RegisterClientScriptBlock (
typeof ( CommunicationType ), "PhoneFormatValidate", sbphone.ToString ( ) );
}
if ( !csm.IsClientScriptBlockRegistered ( uiEmail.ClientID ) )
{
StringBuilder sb = new StringBuilder ( 512 );
sb.Append (
" <script type='text/javascript' language='javascript'>" );
sb.Append (
" function " + uiEmail.ClientID + "_EmailFormatValidate(source, clientside_args) " );
sb.Append (
" { " );
sb.Append (
" var emailStr; " );
sb.Append (
" emailStr = (document.getElementById('" + uiEmail.ClientID + "')).value;" ); //clientside_args.Value;" );
sb.Append (
" clientside_args.IsValid = true; " );
sb.Append (
" emailStr = emailStr.replace(' ','');" );
sb.Append (
" if (emailStr.replace(/\\s+/g, '').length > 0) " );
sb.Append (
" { " );
sb.Append (
" if (!emailStr.match(/^((mailto:)?([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,4})+)$/)) " );
sb.Append (
" clientside_args.IsValid = false; " );
sb.Append (
" } " );
sb.Append (
" } " );
sb.Append (
" </script>" );
csm.RegisterClientScriptBlock (
typeof ( EMailType ), uiEmail.ClientID, sb.ToString ( ) );
}
uiPhone_cv.ClientValidationFunction =
"PhoneFormatValidate";
uiMobilePhone_cv.ClientValidationFunction =
"PhoneFormatValidate";
uiEmail_cv.ClientValidationFunction = uiEmail.ClientID +
"_EmailFormatValidate";
This works fine without the ajaxpanel.
But when I wrap the grid in an ajaxpanel I get a javascript-error (Error: Object expected) when the validation is supposed to fire.
What is the right way to register javascript wich depends on known the clientid?
In context of ajax enabled.
Mvh.
Arve
| <telerik:RadDockLayout ID="RadDockLayout1" runat="server"> |
| <div class="main"> |
| <table border="1" cellpadding="1" cellspacing="1"> |
| <tr> |
| <td> |
| </td> |
| <td> |
| <telerik:RadToolBar runat="server" ID="tbValidation" Skin="Office2007"> |
| <Items> |
| <telerik:RadToolBarButton ImageUrl="Images/submit.gif" ToolTip="OK" CommandName="ok" /> |
| <telerik:RadToolBarButton ImageUrl="Images/close.gif" ToolTip="Annuler" CommandName="cancel" /> |
| </Items> |
| </telerik:RadToolBar> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2"> |
| <div style="position:relative;"> |
| <div style="position:absolute; z-index:1;"> |
| <asp:UpdatePanel ID="UpdatePanel1" runat="server"> |
| <ContentTemplate> |
| <cc1:Map ID="Map1" runat="server" Height="600px" Width="800px"> |
| </cc1:Map> |
| </ContentTemplate> |
| <Triggers> |
| <asp:AsyncPostBackTrigger ControlID="tbInfo" /> |
| <asp:AsyncPostBackTrigger ControlID="tbEdition" /> |
| </Triggers> |
| </asp:UpdatePanel> |
| </div> |
| <div id="toolbar" style="position:absolute; left:75px; z-index:2; filter:Alpha(opacity=20); opacity: .20;" onmouseover="javascript:this.style.filter = 'Alpha(opacity=100)'; this.style.opacity = '1';" onmouseout="javascript:this.style.filter = 'Alpha(opacity=20)'; this.style.opacity = '.20';"> |
| <telerik:RadDockZone |
| ID="dockTop" |
| runat="server" |
| CssClass="zone" |
| Height="65px" |
| Orientation="Horizontal" |
| Width="425px"> |
| </telerik:RadDockZone> |
| </div> |
| </div> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2"> |
| <asp:Button ID="buttonEditShape" runat="server" Text="edit" ToolTip="Edit Shape" |
| OnClick="buttonEditShape_Click" /> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <telerik:RadDock Left="450" Top="150" ID="RadDock1" runat="server" Height="63px" |
| width="201px" OnClientDockPositionChanged="dockInfo" |
| CssClass="dock" DefaultCommands="ExpandCollapse" Title="Information" |
| Skin="Office2007" style="z-index:10;"> |
| <ContentTemplate> |
| <telerik:RadToolBar runat="server" ID="tbInfo" Skin="Office2007" OnButtonClick="test" OnClientButtonClicked="click_handler"> |
| <Items> |
| <telerik:RadToolBarButton ImageUrl="Images/select.png" CheckOnClick="true" AllowSelfUnCheck="true" |
| ToolTip="Selection" CommandName="select" /> |
| <telerik:RadToolBarButton ImageUrl="Images/overview_replacement.gif" CheckOnClick="true" |
| AllowSelfUnCheck="true" ToolTip="Zoom sur selection" CommandName="zoom" /> |
| <telerik:RadToolBarButton ImageUrl="Images/measuring_stick_on.gif" CheckOnClick="true" |
| AllowSelfUnCheck="true" ToolTip="Mesure de distance" CommandName="measure" /> |
| <telerik:RadToolBarButton ImageUrl="Images/surfaceMeasurement.png" CheckOnClick="true" |
| AllowSelfUnCheck="true" ToolTip="Mesure de surface" CommandName="surfaceMeasure" /> |
| <telerik:RadToolBarButton ImageUrl="Images/btn_map_label.gif" CheckOnClick="true" |
| AllowSelfUnCheck="true" ToolTip="Informations" CommandName="info" /> |
| </Items> |
| </telerik:RadToolBar> |
| </ContentTemplate> |
| </telerik:RadDock> |
| <telerik:RadDock Left="500" Top="250" ID="RadDock2" runat="server" Height="63px" |
| width="201px" OnClientDockPositionChanged="dockEdit" |
| CssClass="dock" DefaultCommands="ExpandCollapse" Title="Edition" |
| Skin="Office2007" style="z-index:10;"> |
| <ContentTemplate> |
| <telerik:RadToolBar runat="server" ID="tbEdition" Skin="Office2007" OnButtonClick="test" OnClientButtonClicked="click_handler"> |
| <Items> |
| <telerik:RadToolBarButton ImageUrl="Images/btn_map_edit.gif" CheckOnClick="true" |
| AllowSelfUnCheck="true" ToolTip="Tracer un nouvel objet" CommandName="draw" /> |
| <telerik:RadToolBarButton ImageUrl="Images/modifynode.png" CheckOnClick="true" AllowSelfUnCheck="true" |
| ToolTip="Sommets" CommandName="node" /> |
| <telerik:RadToolBarButton ImageUrl="Images/Delete.gif" CheckOnClick="true" AllowSelfUnCheck="true" |
| ToolTip="Suppression" CommandName="del" /> |
| <telerik:RadToolBarButton ImageUrl="Images/cut.png" CheckOnClick="true" AllowSelfUnCheck="true" |
| ToolTip="Découper" CommandName="cut" /> |
| <telerik:RadToolBarButton ImageUrl="Images/fusionner.png" CheckOnClick="true" AllowSelfUnCheck="true" |
| ToolTip="Fusionner" CommandName="fuze" /> |
| </Items> |
| </telerik:RadToolBar> |
| </ContentTemplate> |
| </telerik:RadDock> |
| </telerik:RadDockLayout> |
<
Columns>
<telerik:GridTemplateColumn UniqueName="TemplateColumn" >
<ItemTemplate>
<asp:Panel ID="Panel1" runat="server">
<asp:CheckBox ID="Enabled" runat="server" AutoPostBack="true" OnCheckedChanged="CheckedChanged" />
</asp:Panel>
</ItemTemplate>
</telerik:GridTemplateColumn>
<
telerik:GridDropDownColumn UniqueName="System" ListTextField="rSystemName" ListValueField="System" ListDataMember="rSystems" DataField="System" HeaderText="r system" DropDownControlType="RadComboBox" />
<telerik:GridBoundColumn UniqueName="Value" DataField="Value" HeaderText="Value" />
<telerik:GridTemplateColumn UniqueName="TemplateColumn" >
<ItemTemplate>
<asp:Panel ID="Panel5" runat="server">
<asp:CheckBox ID="Switch" runat="server" AutoPostBack="true" OnCheckedChanged="CheckedChanged" />
</asp:Panel>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn UniqueName="Alpha" DataField="Alpha" HeaderText="α" />
<telerik:GridBoundColumn UniqueName="Beta" DataField="Beta" HeaderText="β" HeaderStyle-HorizontalAlign="Center" />
</Columns>
<
EditFormSettings CaptionFormatString="Edit details for route with Id {0}" CaptionDataField="Id">
<FormTableItemStyle Width="100%" Height="29px"></FormTableItemStyle>
<FormTableStyle GridLines="None" CellSpacing="0" CellPadding="2"></FormTableStyle>
<FormStyle Width="100%" BackColor="#eef2ea"></FormStyle>
<EditColumn ButtonType="ImageButton" />
</EditFormSettings>
</MasterTableView>
protected
void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
if (Session["Routes"] == null)
{
RadGrid1.DataSource = Routes;
}
else
{
RadGrid1.DataSource = Session[
"Routes"];
}
}