2013-11-01 4 views
2

Это немного сбило меня с ума несколько раз в прошлом, но я всегда подталкивал его и двигался дальше. Сегодня я хочу попробовать и исправить это!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> 

Это делает так: Rendered GridView and FormView

ответ

5

Как об использовании GridView колонтитул для добавления funcionality? Таким образом, у вас будут все столбцы в одной таблице, и вы столкнетесь с проблемами позиционирования.

Вот пример того, как ваш GridView должен выглядеть следующим образом:

<asp:GridView ID="gvTPR" runat="server" DataSourceID="SQLTPR" AutoGenerateColumns="False" ShowFooter="True" DataKeyNames="TPRID" Width="100%" EnableModelValidation="True"> 
<RowStyle HorizontalAlign="Center" /> 
<EditRowStyle BackColor="#ccffff" /> 
<HeaderStyle BackColor="#013b82" ForeColor="White" /> 
<Columns> 
    <asp:TemplateField HeaderText="Entered At" SortExpression="TPREnteredAt"> 
     <EditItemTemplate> 
      <asp:TextBox ID="lblEnteredAt" runat="server" Text='<%# Eval("TPREnteredAt") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" Text='<%# Bind("TPREnteredAt") %>'></asp:Label> 
     </ItemTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="24%" /> 
     <FooterTemplate> 
      <asp:TextBox ID="lblEnteredAt" runat="server" Text="Will be added automatically" Width="24%" /> 
     </FooterTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Temp" SortExpression="TPRTemp"> 
     <EditItemTemplate> 
      <asp:TextBox ID="txtTemp" runat="server" Text='<%# Eval("TPRTemp") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label2" runat="server" Text='<%# Bind("TPRTemp") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="txtTemp" runat="server" Text='<%# Bind("TPRTemp")%>' Width="12%" /> 
     </FooterTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="12%" /> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Pulse" SortExpression="TPRPulse"> 
     <EditItemTemplate> 
      <asp:TextBox ID="txtPulse" runat="server" Text='<%# Eval("TPRPulse") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label3" runat="server" Text='<%# Bind("TPRPulse") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="txtPulse" runat="server" Text='<%# Bind("TPRPulse")%>' Width="12%" /> 
     </FooterTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="12%" /> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Respiration" SortExpression="TPRRespiration"> 
     <EditItemTemplate> 
      <asp:TextBox ID="txtRespiration" runat="server" Text='<%# Eval("TPRRespiration") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label4" runat="server" Text='<%# Bind("TPRRespiration") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="txtRespiration" runat="server" Text='<%# Bind("TPRRespiration")%>' Width="12%" /> 
     </FooterTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="12%" /> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="PCV"> 
     <EditItemTemplate> 
      <asp:TextBox ID="txtPCV" runat="server" Text='<%# Bind("TPRPCV") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label5" runat="server" Text='<%# Bind("TPRPCV") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="txtPCV" runat="server" Text='<%# Bind("TPRPCV")%>' Width="12%" /> 
     </FooterTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="12%" /> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="TP"> 
     <EditItemTemplate> 
      <asp:TextBox ID="txtTP" runat="server" Text='<%# Bind("TPRTP") %>'></asp:TextBox> 
     </EditItemTemplate> 
     <ItemTemplate> 
      <asp:Label ID="Label6" runat="server" Text='<%# Bind("TPRTP") %>'></asp:Label> 
     </ItemTemplate> 
     <FooterTemplate> 
      <asp:TextBox ID="txtTP" runat="server" Text='<%# Bind("TPRTP")%>' Width="12%" /> 
     </FooterTemplate> 
     <ControlStyle Width="90%" /> 
     <ItemStyle Width="12%" /> 
    </asp:TemplateField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:Button ID="lnkbtnEdit" runat="Server" Text="Edit" CommandName="Edit" 
       CausesValidation="false"></asp:Button> 

     </ItemTemplate> 
     <EditItemTemplate> 
      <asp:Button ID="lnkbtnUpdate" runat="Server" Text="Save" CommandName="Update" 
       CausesValidation="true"></asp:Button><br /> 
      <asp:LinkButton ID="lnkbtnCancel" runat="Server" Text="Cancel" CommandName="Cancel" 
       CausesValidation="false"></asp:LinkButton> 
     </EditItemTemplate> 
     <FooterTemplate> 
      <asp:LinkButton ID="lnkbtnInsert" runat="Server" Text="Save" CommandName="Insert" 
       CausesValidation="true"></asp:LinkButton> 
     </FooterTemplate> 
    </asp:TemplateField> 
</Columns> 
<EmptyDataTemplate> 
    No TPR records exist 
</EmptyDataTemplate> 
</asp:GridView> 

Надеется, что это помогает!

С уважением, Урос

+0

Совершенные, спасибо! Теперь, когда вы упомянули об этом, я думаю, что делал это раньше, но спасибо, что так хорошо напомнил мне об этом! –

+0

На самом деле требуется больше работы, потому что элемент управления GridView не поддерживает вставку изначально, но я могу понять это сам. –