asp.net 如何在GridView中固定每列的宽度?

doinxwow  于 2023-02-17  发布在  .NET
关注(0)|答案(5)|浏览(330)

我如何在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列之前没有任何问题。它保持extend,因为所有GridView都扩展到页面之外

sirbozc5

sirbozc51#

设置每列的itemstyle宽度。例如。

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

vq8itlhq2#

换行是基于单词进行的,因此任何单个单词都不会分成两行。
所以如果你的数据有很长的没有空格的字符串,它就不起作用了。
问题是您不能自己插入空格,因为这可能会改变数据的含义。
在网格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.中显示时,网格格式不会受到影响,如果用户愿意,他可以悬停鼠标并查看整个字符串。
希望这对Example有所帮助

ttisahbt

ttisahbt3#

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

w8f9ii69

w8f9ii694#

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

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

gab6jxml5#

我想RowStyle-Wrap==true应该可以工作。更多的说明请参考:http://forums.asp.net/t/1263769.aspx

相关问题