jquery - 使用 jQuery 调整网格中所有可编辑字段的大小

标签 jquery asp.net radgrid autoresize inline-editing

我的一个网络表单上有一个 RadGrid,并且我正在使用 InPlace(内联)编辑,底部有一个空行用于插入。

当网格加载时,使用 JavaScript(我假设)在渲染后自动调整列的大小(您实际上可以看到页面加载时调整的列),但列中的输入不会调整大小以适应调整后的列宽,从而留下大量空白。我尝试连接到自动调整列大小的 JavaScript 方法,但似乎不可能。

我想使用 jQuery 来查找列大小调整后的所有输入,并调整它们的大小以适合列的宽度。 唯一需要调整大小的输入是 TextBoxesDropDowns,而且我不需要计算宽度 - 只需设置将控件设置为 100%,以便它们填充列中的可用空间。

编辑

I should also note that the inputs are set to 100% width in the markup, but they don't scale when the columns are resized. It seems like this behavior is incorrect.

RadGrid 确实有一个 ClientSettings 部分,您可以在其中订阅许多客户端事件,但是当网格自动调整大小时,调整大小事件不会触发;仅当用户手动调整列大小时。

一些精通 jQuery 的人可以就如何做到这一点提出一些建议吗?

以下是 RadGrid 的一些示例标记:

<telerik:RadGrid ID="grdVendorAddresses" runat="server">                                
    <MasterTableView AutoGenerateColumns="false" InsertItemDisplay="Bottom" EditMode="InPlace" DataKeyNames="AddressID, AddressTypeID, IsActive">      
        <ItemStyle Font-Size="12px" Font-Names="Verdana" Wrap="false" />
        <HeaderStyle Font-Size="12px" Font-Names="Verdana" Wrap="false" />
        <AlternatingItemStyle Font-Size="12px" Font-Names="Verdana" Wrap="false" />         
        <Columns>
            <telerik:GridEditCommandColumn UniqueName="EditButton" ButtonType="ImageButton" EditImageUrl="/images/edit_icon_pencil.png" InsertImageUrl="/images/save_icon_small.png" UpdateImageUrl="/images/save_icon_small.png" CancelImageUrl="/images/cancel_icon.png">
                <ItemStyle HorizontalAlign="Center" Width="60" />
            </telerik:GridEditCommandColumn>              
            <telerik:GridTemplateColumn HeaderText="Address" DataField="StreetAddress" Resizable="false">                        
                <ItemStyle HorizontalAlign="Left" />        
                <HeaderStyle HorizontalAlign="Left" />                
                <ItemTemplate>                       
                    <%#Eval("StreetAddress")%>
                </ItemTemplate>
                <EditItemTemplate>
                    <div style="padding:5px 0px 5px 0px;">
                        <telerik:RadTextBox ID="txtStreetAddress" runat="server" Skin="Sunset" Text='<%#Bind("StreetAddress")%>' Font-Size="12px" Font-Names="Verdana" Width="100%"></telerik:RadTextBox>
                    </div>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>       
            <telerik:GridTemplateColumn HeaderText="City" DataField="City">                        
                <ItemStyle HorizontalAlign="Left" />        
                <HeaderStyle HorizontalAlign="Left" />                
                <ItemTemplate>                       
                    <%#Eval("City")%>
                </ItemTemplate>
                <EditItemTemplate>
                    <div style="padding:5px 0px 5px 0px;">
                        <telerik:RadTextBox ID="txtCity" runat="server" Skin="Sunset" Text='<%#Bind("City")%>' Font-Size="12px" Font-Names="Verdana" Width="100%"></telerik:RadTextBox>
                    </div>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>                             
            <telerik:GridTemplateColumn HeaderText="Country" DataField="CountryID">                        
                <ItemStyle HorizontalAlign="Center" />        
                <HeaderStyle HorizontalAlign="Center" />                
                <ItemTemplate>                       
                    <%#Eval("CountryName")%>
                </ItemTemplate>
                <EditItemTemplate>
                    <div style="padding:5px 5px 5px 5px;">
                        <telerik:RadComboBox ID="ddlCountry" runat="server" Skin="Sunset" Font-Size="12px" Font-Names="Verdana" DataSourceID="ddsCountries" Height="200" DataTextField="CountryName" DataValueField="CountryID" Width="100%" SelectedValue='<%#Bind("CountryID")%>'></telerik:RadComboBox>                        
                    </div>
                </EditItemTemplate>
            </telerik:GridTemplateColumn>    
    </MasterTableView>
</telerik:RadGrid>           

最佳答案

无需 JavaScript,用 CSS 即可完成 CSS

#ClientID_OF_GRID input[type="text"] {
 width: 100% !important;
}

在您的情况下,您的列将根据内容调整大小,请执行此操作

 .grid-input {
     width: 100% !important;
    }

然后在列大小调整完成后调用此脚本

$('#grid_client_id input[type="text"]').setClass('grid-input');

关于jquery - 使用 jQuery 调整网格中所有可编辑字段的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449300/

相关文章:

javascript - 如何在数字分页中选择脚?辐射网格

javascript - Telerik ASP.Net Radgrid 显示/隐藏过滤器

javascript - 动画完成时球停止

jQuery 地址 - 后退按钮

c# - 如何从 GridView 中删除一行?

asp.net - 如何从 Request.form.Allkeys 读取值

javascript - radgrid - 在客户端获取服务器编辑的行

javascript - 为屏幕上的位置添加监听器

javascript - 如何调用传递不同 ID 的函数方法?

c# - 按钮需要点击两次才能触发事件