RadGrid没有在RadWindow中调整大小

时间:2015-06-22 21:43:58

标签: asp.net telerik

我在我的RadWindow中正确调整RadGrid大小的问题。 RadGrid保持其渲染的大小,直到RadWindow调整大小时它被反弹。在它反弹之后,它会像你期望的那样收缩和扩张。我设置下面的javascript来触发OnClientResizeEnd并在所有情况下修复我的问题,除非你最大化窗口。显然,最大化窗口不会触发任何OnClientResize事件。我已经尝试删除更新面板而没有任何更改。我很感激任何吸烟。

<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>

1 个答案:

答案 0 :(得分:1)

最简单的解决方案 - 将网格移动到自己的aspx页面,以便RadWindow将其加载到iframe中,然后网格可以获取iframe将触发的window.resize事件。

使用ContentTemplate时,您应该在窗口大小发生变化时调用网格的repaint()方法(OnClientResizeEndOnClientCommand是您的事件。)

<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>
相关问题