【问题标题】:set column width of a gridview in asp.net在asp.net中设置gridview的列宽
【发布时间】:2011-04-20 07:09:03
【问题描述】:

我将一个 GridView 从工具箱拖放到 Aspx 页面。设计代码如下所示

<asp:GridView ID="gridview1" runat="server"   style="text-align:center;width: 1327px;" 
    CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" 
    EnableSortingAndPagingCallbacks="True" PageSize="50" AutoGenerateEditButton="True">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" 
        Height="12px" VerticalAlign="Bottom" Width="12px" Wrap="False" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>

我在数据库中有一个名称为地址的列。该表使用以下 VB.NET 代码绑定到此网格视图

 Dim ds as Data.DataSet
 Dim da As New OleDbDataAdapter("select col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,Address from table, con)
        da.Fill(ds)
        gridviewrealestate.DataSource = ds
        gridviewrealestate.DataBind()

现在,当显示网格视图时,由于地址列中存在大量信息,列彼此非常接近。我想将地址列设置为特定宽度。 请帮助我如何做到这一点。

【问题讨论】:

    标签: asp.net aspxgridview


    【解决方案1】:
    <asp:GridView ID="GridView1" runat="server">
        <HeaderStyle Width="10%" />
        <RowStyle Width="10%" />
        <FooterStyle Width="10%" />
        <Columns>
            <asp:BoundField HeaderText="Name" DataField="LastName" 
                HeaderStyle-Width="10%" ItemStyle-Width="10%"
                FooterStyle-Width="10%" />
        </Columns>
    </asp:GridView>
    

    【讨论】:

      【解决方案2】:

      我知道这是一个老问题,但是当我在寻找相同问题的解决方案时它突然出现了,所以我想我会发布对我有用的东西。

      <asp:BoundField DataField="Description" HeaderText="Bond Event" ItemStyle-Width="300px" />
      

      我在BoundField 上使用了ItemStyle-Width 属性,效果非常好,我还没有遇到任何问题。

      我也不需要在其余代码中添加任何其他内容来完成这项工作。

      【讨论】:

        【解决方案3】:

        设置宽度

        HeaderStyle-width

        例如 HeaderStyle-width="10%"

        【讨论】:

          【解决方案4】:

          这对我有用。在页脚设置文本框中设置 HeaderStyle-Width="5%" width Width="15",也将gridview的宽度设置为100%。以下是我的gridview 的列之一。

              <asp:TemplateField   HeaderText = "sub" HeaderStyle-ForeColor="White" HeaderStyle-Width="5%">
          <ItemTemplate>
              <asp:Label ID="sub" runat="server" Font-Size="small" Text='<%# Eval("sub")%>'></asp:Label>
          </ItemTemplate> 
           <EditItemTemplate>
              <asp:TextBox ID="txt_sub" runat="server" Text='<%# Eval("sub")%>'></asp:TextBox>
          </EditItemTemplate> 
          <FooterTemplate>
              <asp:TextBox ID="txt_sub" runat="server" Width="15"></asp:TextBox>
          </FooterTemplate>
          

          【讨论】:

            【解决方案5】:

            您需要将该列转换为“TemplateField”。

            在设计器视图中,单击 GridView 的智能标记,选择->“编辑列”。 选择您要修改的列,然后按超链接将其转换为模板。看截图: Converting column to template.

            注意:修改数据源可能会再次重新生成列,因此可能会更改模板列。

            参考:https://msdn.microsoft.com/en-us/library/bb288032.aspx

            【讨论】:

              【解决方案6】:

              在 TemplateFiels 中添加 HeaderStyle-Width 和 ItemStyle-width

               <asp:GridView ID="grdCanceled" runat="server" AutoGenerateColumns="false" OnPageIndexChanging="grdCanceled_PageIndexChanging"  AllowPaging="true" PageSize="15"
                       CssClass="table table-condensed table-striped table-bordered" GridLines="None">
                           <HeaderStyle BackColor="#00BCD4"  ForeColor="White" />
                           <PagerStyle CssClass="pagination-ys" />
                             <Columns>
                          <asp:TemplateField HeaderText="Mobile NO" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                              <ItemTemplate>
                                <%#Eval("mobile") %>
                              </ItemTemplate>
                             </asp:TemplateField>
                         <asp:TemplateField HeaderText="Name" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                              <ItemTemplate>
                                  <%#Eval("name") %>
                              </ItemTemplate>
                          </asp:TemplateField>
                          <asp:TemplateField HeaderText="City" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                              <ItemTemplate>
                                  <%#Eval("city") %>
                              </ItemTemplate>
                          </asp:TemplateField>
                          <asp:TemplateField HeaderText="Reason" HeaderStyle-Width="25%" ItemStyle-Width="25%">
                               <ItemTemplate>
                                  <%#Eval("reson") %>
                               </ItemTemplate>
                           </asp:TemplateField>
                           <asp:TemplateField HeaderText="Agent" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                               <ItemTemplate>
                                   <%#Eval("Agent") %>
                               </ItemTemplate>
                           </asp:TemplateField>
                           <asp:TemplateField HeaderText="Date" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                               <ItemTemplate>
                                 <%#Eval("date","{0:dd-MMM-yy}") %>
                               </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="DList" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                                <ItemTemplate>
                                    <%#Eval("service") %>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="EndDate" HeaderStyle-Width="10%" ItemStyle-Width="10%">
                                <ItemTemplate>
                                    <%#Eval("endDate","{0:dd-MMM-yy}") %>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderStyle-Width="5%" ItemStyle-Width="5%">
                                <ItemTemplate>
                                     <asp:CheckBox data-needed='<%#Eval("userId") %>' ID="chkChecked" runat="server" />
                                 </ItemTemplate>
                             </asp:TemplateField>
                           </Columns>
                        </asp:GridView>
              

              【讨论】:

                【解决方案7】:

                有两个步骤:

                1. 您必须为 GridView 设置适当的宽度,如下所示:Width="2000px"。
                2. 您可以通过设置[ItemStyle-Width]来设置列的宽度,如下所示:ItemStyle-Width="300px"。

                ** 您可以通过设置固定像素(如“150 px”)或百分比(如“10%”)来设置宽度。

                【讨论】:

                  【解决方案8】:
                  <asp:BoundField DataField="ElementName" HeaderText="RBI GL Name" ItemStyle-Horizontal ItemStyle-Width="50px" HeaderStyle-Width="50px"/> 
                  

                  【讨论】:

                  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请编辑您的答案以添加一些解释,包括您所做的假设。
                  猜你喜欢
                  • 2012-01-06
                  • 1970-01-01
                  • 2012-06-14
                  • 2020-11-28
                  • 2017-09-13
                  • 1970-01-01
                  • 2017-06-21
                  • 2015-11-23
                  • 2023-03-29
                  相关资源
                  最近更新 更多