为什么这个ASP.NET Gridview容器没有保持其宽度?

时间:2016-03-10 04:05:30

标签: html css asp.net gridview

我有以下情况:

    .divContenedor
    {
        background-color: #F2F2F2;
        position: relative;
        width: 100%;
    }
    .divGrilla
    {
        width: 100%;
        margin: 0 auto 0 auto;
        display: flex;
        align-items: center;
        padding-left: 10px;
    }

<asp:UpdatePanel runat="server" ID="updCondiciones">
        <ContentTemplate>
            <div class="divContenedor">
                <div class="divGrilla">
                    <asp:GridView ID="dgCondiciones" runat="server"     Width="98%"    AutoGenerateColumns="False"
                        OnRowDataBound="dgCondiciones_RowDataBound" PageSize="20" AllowPaging="true"
                        BorderColor="#DCDCDC" AllowSorting="True" OnSortCommand="dgCondiciones_SortCommand"
                        OnPageIndexChanging="dgCondiciones_PageIndexChanging" OnSorting="dgCondiciones_Sorting">
                        <Columns>
                        </Columns>
                    </asp:GridView>
                </div>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

“divContenedor”中还有其他div,但它们并不相关。

Gridview的宽度=“98%”,它位于宽度=“100%”的div内。当我得到包含大文本的行时,GridView可以正确扩展到98%,但是当我获得具有较短文本的行时,它会收缩。它应始终保持相同的宽度。

由于“divContenedor”和“divGrilla”的宽度=“100%”,它们应该扩展到屏幕尺寸,对吗?

我调试了页面,我注意到在“divGrilla”和Gridview(呈现为表格)之间有一个额外的div:

<div class="divGrilla">
  <div>
    <table id="dgCondiciones"></table>
  </div>
</div>

“divGrilla”以Width =“100%”呈现,Gridview(dgCondiciones)实际上具有Width =“98%”。问题是dgCondiciones正在调整到这个额外div的98%,这似乎有更短的宽度。

有人可以向我解释一下这个额外的div是什么,如果有办法让GridView宽度没有为每列设置一个特定的宽度,并且没有设置Gridview宽度为“px”?

1 个答案:

答案 0 :(得分:0)

<asp:UpdatePanel runat="server" ID="updCondiciones">
    <ContentTemplate>
        <div class="divContenedor">
            <div class="divGrilla">
                <asp:GridView ID="GridView1" runat="server" Width="98%" AutoGenerateColumns="False"
                    OnRowDataBound="dgCondiciones_RowDataBound" PageSize="20" AllowPaging="true"
                    BorderColor="#DCDCDC" AllowSorting="True" OnSortCommand="dgCondiciones_SortCommand"
                    OnPageIndexChanging="dgCondiciones_PageIndexChanging" OnSorting="dgCondiciones_Sorting">
                    <Columns>
                        <asp:TemplateField HeaderText="">
                            <ItemTemplate>
                                <asp:DropDownList ID="test" runat="server" Width="98%" >
                                </asp:DropDownList>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Left" Width="98%" />
                            <HeaderStyle HorizontalAlign="Left" Width="98%" />
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </div>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

您已编写正确的代码,仅添加&lt; ItemStyle Horizo​​ntalAlign =&#34; Left&#34;宽度=&#34; 98%&#34; /&GT;到列的模板字段。 并且Gridview总是在html中呈现为表格,因此我们的观察是正确的。 只根据您的要求使用itemstyle,您的问题将得到解决。 如果您在执行此操作时遇到任何其他问题,请告诉我。