Reputation: 47
I am having an issue with my RadGrid resizing correctly in my RadWindow. The RadGrid maintains the size it was rendered with until it is rebound when the RadWindow is resized. After it is rebound once it shrinks and expands as you would expect. I set the below javascript to trigger OnClientResizeEnd and that fixes my issue in all cases except for when you maximize the window. Evidently maximizing the window dosen't trigger any of the OnClientResize events. I have already tried removing the update pannel with no change. I would appreciate any sugestions.
<script type="text/javascript">
function ResizeAddress(sender, eventArgs) {
var masterTable = $find("<%= AddressGrid.ClientID %>").get_masterTableView();
masterTable.rebind();
}
</script>
<telerik:RadWindow ID="AddressWindow" runat="server" Modal="true" Height="400px" Behaviors="Close,Resize,Move,Maximize" EnableViewState="true" AutoSize="true" AutoSizeBehaviors="WidthProportional" OnClientResizeEnd="ResizeAddress">
<ContentTemplate>
<asp:UpdatePanel ID="AddressUDP" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<telerik:RadGrid MasterTableView-HorizontalAlign="Center" ID="AddressGrid" runat="server" Width="99%" AllowAutomaticInserts="True" AllowFilteringByColumn="True" AllowSorting="True" DataSourceID="OrgData" GroupPanelPosition="Top" AutoGenerateColumns="False" OnInsertCommand="AddressGrid_InsertCommand" >
<MasterTableView DataKeyNames="Address_ID" DataSourceID="AddressDataSource" CommandItemDisplay="TopAndBottom" AllowMultiColumnSorting="True" AllowAutomaticDeletes="True" AllowAutomaticUpdates="True">
<Columns>
<telerik:GridTemplateColumn ItemStyle-HorizontalAlign="Center" Groupable="False" HeaderButtonType="PushButton" UniqueName="EditCommandColumn" AllowFiltering="false" HeaderStyle-Width="200px">
<ItemTemplate>
<telerik:RadButton CommandName="Edit" CausesValidation="false" runat="server" Text="Edit"></telerik:RadButton>
</ItemTemplate>
<HeaderStyle Width="65px"></HeaderStyle>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Address_Street_1" FilterControlAltText="Filter Address column" HeaderText="Address" SortExpression="Address_Street_1" UniqueName="Address_Street_1">
<EditItemTemplate>
<telerik:RadTextBox MaxLength="80" Width="200px" ID="Address_Street_1TextBox" runat="server" Text='<%# Bind("Address_Street_1") %>'></telerik:RadTextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Address_Street_1Label" runat="server" Text='<%# Eval("Address_Street_1") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Address_Street_2" FilterControlAltText="Filter Address 2 column" HeaderText="Address 2" SortExpression="Address_Street_2" UniqueName="Address_Street_2">
<EditItemTemplate>
<telerik:RadTextBox MaxLength="80" Width="200px" ID="Address_Street_2TextBox" runat="server" Text='<%# Bind("Address_Street_2") %>'></telerik:RadTextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Address_Street_2Label" runat="server" Text='<%# Eval("Address_Street_2") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Address_City" FilterControlAltText="Filter City column" HeaderText="City" SortExpression="Address_City" UniqueName="Address_City">
<EditItemTemplate>
<telerik:RadTextBox MaxLength="80" Width="120px" ID="Address_CityTextBox" runat="server" Text='<%# Bind("Address_City") %>'></telerik:RadTextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Address_CityLabel" runat="server" Text='<%# Eval("Address_City") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Address_State" FilterControlAltText="Filter State column" HeaderText="State" SortExpression="Address_State" UniqueName="Address_State">
<EditItemTemplate>
<telerik:RadComboBox MaxLength="2" Width="70px" EnableLoadOnDemand="true" ID="Address_StateComboBox" runat="server" Text='<%# Bind("Address_State") %>' DataSourceID="TerritoryDataSource" DataTextField="Address_State"></telerik:RadComboBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Address_StateLabel" runat="server" Text='<%# Eval("Address_State") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="Address_Zip" FilterControlAltText="Filter Zip Code column" HeaderText="Zip Code" SortExpression="Address_Zip" UniqueName="Address_Zip">
<EditItemTemplate>
<telerik:RadNumericTextBox MaxLength="5" Width="100px" MinValue="0" MaxValue="99999" ID="Address_ZipTextBox" runat="server" Text='<%# Bind("Address_Zip") %>'><NumberFormat GroupSeparator="" DecimalDigits="0" /></telerik:RadNumericTextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Address_ZipLabel" runat="server" Text='<%# Eval("Address_Zip") %>'></asp:Label>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridCheckBoxColumn DataField="Default" DataType="System.Boolean" FilterControlAltText="Filter Default column" HeaderText="Default" SortExpression="Default" UniqueName="DefaultChk"></telerik:GridCheckBoxColumn>
<telerik:GridTemplateColumn ItemStyle-HorizontalAlign="Center" Groupable="False" HeaderButtonType="PushButton" UniqueName="DeleteCommandColumn" AllowFiltering="false" HeaderStyle-Width="100px">
<ItemTemplate>
<telerik:RadButton CommandName="Delete" CausesValidation="false" runat="server" Text="Delete"></telerik:RadButton>
</ItemTemplate>
<HeaderStyle></HeaderStyle>
</telerik:GridTemplateColumn>
</Columns>
<EditFormSettings>
<EditColumn UniqueName="EditCommandColumn1" FilterControlAltText="Filter EditCommandColumn1 column"></EditColumn>
</EditFormSettings>
</MasterTableView>
</telerik:RadGrid>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</telerik:RadWindow>
Upvotes: 1
Views: 1285
Reputation: 5611
Your easiest solution - move the grid to its own aspx page so RadWindow loads it in an iframe and then the grid can get the window.resize event the iframe will fire.
With the ContentTemplate
, you should call the repaint()
method of the grid when the window size changes (OnClientResizeEnd
, OnClientCommand
are your events).
<telerik:RadWindow ID="RadWindow1" runat="server" OnClientShow="repaintGrid" OnClientResizeEnd="repaintGrid" OnClientCommand="OnClientCommand">
<ContentTemplate>
<asp:UpdatePanel ID="Updatepanel1" runat="server" Style="height: 100%; width: 100%; overflow: hidden;">
<ContentTemplate>
<telerik:RadGrid ID="RadGrid1" runat="server" Width="100%" Height="100%" OnNeedDataSource="RadGrid1_NeedDataSource"></telerik:RadGrid>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</telerik:RadWindow>
<asp:Button ID="Button1" Text="open RW" OnClientClick="openWnd(); return false;" runat="server" />
<script>
function repaintGrid() {
$find("<%=RadGrid1.ClientID%>").repaint();
}
function OnClientCommand(sender, args) {
if(args.get_commandName() == "Maximize" || args.get_commandName() == "Restore")
{
repaintGrid();
}
}
function openWnd() {
$find("<%=RadWindow1.ClientID%>").show();
}
</script>
Upvotes: 1