【问题标题】:How to fix the width for each column in GridView?如何修复GridView中每一列的宽度?
【发布时间】:2017-11-02 12:32:18
【问题描述】:

如何固定 GridView 中每一列的宽度。我的 GridView 与单元格中的数据一起扩展。当它到达单元格的右侧时,我需要它跳到新行。这是我在 .aspx 文件中的代码:

<asp:GridView ID="GridView1" runat="server" 
AutoGenerateColumns="False" DataKeyNames="Emp_ID" DataSourceID="LinqDataSource1"
AllowPaging="True"  AllowSorting="True" Width="900px" HorizontalAlign="Center" >                        
           <Columns>
               <asp:BoundField DataField="Emp_ID" HeaderText="ID" 
        InsertVisible="False" ReadOnly="True" SortExpression="Emp_ID"/>
               <asp:BoundField DataField="Emp_Username" 
        HeaderText="Username" SortExpression="Emp_Username" />
               <asp:BoundField DataField="Emp_Password" 
        HeaderText="Password" SortExpression="Emp_Password" />
               <asp:BoundField DataField="Emp_Name" 
        HeaderText="ชื่อพนักงาน" SortExpression="Emp_Name" />
               <asp:BoundField DataField="Emp_Address" 
        HeaderText="ที่อยู่" SortExpression="Emp_Address" />
               <asp:BoundField DataField="Emp_Tel" 
        HeaderText="เบอร์โทรศัพท์" SortExpression="Emp_Tel" />
               <asp:TemplateField HeaderText="รูปพนักงาน" SortExpression="Emp_Picture">
                    <EditItemTemplate>
                         <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Emp_Picture") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Image ID="Image2" runat="server" Height="70px" 
                                        ImageUrl='<%# Eval("Emp_Picture", "{0}") %>' Width="50px" />
                    </ItemTemplate>
              </asp:TemplateField>
              <asp:BoundField DataField="Status" HeaderText="สถานะ" 
        SortExpression="Status" />
              <asp:HyperLinkField DataNavigateUrlFields="Emp_ID" 
                                DataNavigateUrlFormatString="AdminUpdate.aspx?Emp_ID={0}" Text="Edit" />
              <asp:TemplateField>
                   <HeaderTemplate>
                       <asp:CheckBox ID="ChkSelectAll" runat="server" 
                AutoPostBack="True" oncheckedchanged="ChkSelectAll_CheckedChanged"  />
                   </HeaderTemplate>
                   <ItemTemplate>
                       <asp:CheckBox ID="Chk" runat="server" AutoPostBack="True" oncheckedchanged="Chk_CheckedChanged" />
                   </ItemTemplate>
               </asp:TemplateField>
           </Columns>
</asp:GridView>

这是我的设计视图:

如您所见,前 4 列直到第 5 列都没有问题。它保持扩展,导致所有 GridView 扩展出页面

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    设置每列的itemstyle宽度。例如

    <asp:BoundField DataField="Emp_Address" 
        HeaderText="ที่อยู่" SortExpression="Emp_Address">
       <ItemStyle Width="200px" HorizontalAlign="Left" />
    </asp:BoundField>
    

    【讨论】:

    • 它将垂直扩展而不是水平扩展。因为你固定了宽度。
    • 点击零上方的向上箭头。
    • 我只有 12 个代表。它需要 15 个代表。
    【解决方案2】:

    换行是基于单词完成的,因此任何单个单词都不会分成两行。

    因此,如果您的数据有长字符串而没有空格,则不适用于您。

    问题是你不能自己插入空格,因为这可能会改变数据的含义。

    在网格中显示时we show only that long string which can be accommodated in column and then add "..." (only if string is more than what is showing) and then add a tooltip to show the full string. 这样网格格式不会受到影响,如果用户愿意,他可以将鼠标悬停并查看整个字符串。

    希望对你有帮助

    【讨论】:

    • 我只是试了一下,现在可以了,所以我应该在单词中添加更多空格。非常感谢!!
    【解决方案3】:

    尝试将 GridView 的属性RowStyle-Wrap 设置为True

    【讨论】:

      【解决方案4】:

      您可以使用ItemStyle-Width 来固定列宽,但如果您输入的字符不能包含在给定宽度内(如您的图片所示),列将根据输入扩展,因此您可以使用@987654322 @gridview的属性

      <asp:GridView ID="grdVwtrial" runat="server" RowStyle-Wrap="true">
      

      【讨论】:

        【解决方案5】:

        RowStyle-Wrap==true 我猜应该可以工作。有关更多说明,请参阅: http://forums.asp.net/t/1263769.aspx

        【讨论】:

          猜你喜欢
          • 2019-01-31
          • 2011-07-21
          • 2014-02-01
          • 2014-01-19
          • 1970-01-01
          • 1970-01-01
          • 2017-10-08
          • 2023-03-26
          • 1970-01-01
          相关资源
          最近更新 更多