Это немного сбило меня с ума несколько раз в прошлом, но я всегда подталкивал его и двигался дальше. Сегодня я хочу попробовать и исправить это!FormView Layout
Я довольно часто создает GridView
для отображения данных и FormView
непосредственно под в режиме вставки с элементами управления в InsertItemTemplate соответствующих столбцов в GridView
, так что она выглядит как FormView
просто пустая строка GridView
в ожидании новый ввод данных. Это отлично работает.
Проблема в том, что я никогда не могу получить ширину «столбцов» (действительно только текстовых полей) в FormView
, чтобы соответствовать ширине столбцов в GridView
выше.
В приведенном ниже, как вы можете видеть, например, как GridView
и FormView
имеют ширину 100% и, конечно, когда страница отображается они оба точно такую же ширину (я дал FormView
границу кратко проверить). Однако, хотя ширина текстовых полей в FormView
идентична ширине столбцов в GridView
, они не отображаются таким образом. Текстовые поля немного шире, и к тому моменту, когда вы попадаете в самый правый столбец, кумулятивный эффект означает, что выравнивание выходное.
Я предполагаю, что проблема связана с шириной границы или с каким-либо другим скрытым элементом, который визуализируется, но я не могу понять это. Я должен сказать, что сумма, на которую выравнивается, кажется больше, чем пара пикселей, граница повлияла бы на вещи.
<asp:GridView ID="gvTPR" runat="server" DataSourceID="SQLTPR" AutoGenerateColumns="false" DataMember="DefaultView" DataKeyNames="TPRID" Width="100%" >
<RowStyle HorizontalAlign="Center" />
<EditRowStyle BackColor="#ccffff" />
<HeaderStyle BackColor="#013b82" ForeColor="White" />
<Columns>
<asp:BoundField DataField="TPREnteredAt" HeaderText="Entered At" ReadOnly="True" SortExpression="TPREnteredAt" ItemStyle-Width="24%" ControlStyle-Width="90%" />
<asp:BoundField DataField="TPRTemp" HeaderText="Temp" ReadOnly="True" SortExpression="TPRTemp" ItemStyle-Width="12%" ControlStyle-Width="90%"/>
<asp:BoundField DataField="TPRPulse" HeaderText="Pulse" ReadOnly="True" SortExpression="TPRPulse" ItemStyle-Width="12%" ControlStyle-Width="90%"/>
<asp:BoundField DataField="TPRRespiration" HeaderText="Respiration" ReadOnly="True" SortExpression="TPRRespiration" ItemStyle-Width="12%" ControlStyle-Width="90%"/>
<asp:BoundField DataField="TPRPCV" HeaderText="PCV" ItemStyle-Width="12%" ControlStyle-Width="90%"/>
<asp:BoundField DataField="TPRTP" HeaderText="TP" ItemStyle-Width="12%" ControlStyle-Width="90%" />
<asp:CommandField ButtonType="Button" InsertVisible="False" ShowEditButton="True" ItemStyle-Width="16%" UpdateText="Save" ControlStyle-Width="60px" />
</Columns>
<EmptyDataTemplate>
No TPR records exist
</EmptyDataTemplate>
</asp:GridView>
<asp:FormView ID="fvTPR" runat="server" DataSourceID="SQLTPR" DefaultMode="Insert" Width="100%" >
<InsertItemTemplate>
<asp:textbox ID="lblEnteredAt" runat="server" Text="Will be added automatically" Width="24%" />
<asp:TextBox ID="txtTemp" runat="server" Text='<%# Bind("TPRTemp")%>' Width="12%" />
<asp:TextBox ID="txtPulse" runat="server" Text='<%# Bind("TPRPulse")%>' Width="12%" />
<asp:TextBox ID="txtRespiration" runat="server" Text='<%# Bind("TPRRespiration")%>' Width="12%" />
<asp:TextBox ID="txtPCV" runat="server" Text='<%# Bind("TPRPCV")%>' Width="12%" />
<asp:TextBox ID="txtTP" runat="server" Text='<%# Bind("TPRTP")%>' Width="12%" />
<asp:Button ID="btnAddTPR" runat="server" Text="Save" Width="5%" />
</InsertItemTemplate>
</asp:FormView>
Это делает так:
Совершенные, спасибо! Теперь, когда вы упомянули об этом, я думаю, что делал это раньше, но спасибо, что так хорошо напомнил мне об этом! –
На самом деле требуется больше работы, потому что элемент управления GridView не поддерживает вставку изначально, но я могу понять это сам. –