これは過去数回私を夢中にさせましたが、私はいつもそれをごまかして先に進みました。今日、私はそれを試して修正したいと思います!
の列に対応する InsertItemTemplate のコントロールを使用して、挿入モードでデータを表示するための とそのすぐ下のGridView
を頻繁に作成します。これはうまくいきます。FormView
GridView
FormView
GridView
FormView
問題は、上記の列の幅に対応する「列」(実際にはテキストボックスのみ) の幅を取得できないことGridView
です。
以下の例では、ご覧のとおり、 と の両方が 100% の幅GridView
をFormView
持ち、確かに、ページがレンダリングされると、両方ともまったく同じ幅になります (FormView
確認のために a 境界線を簡単に指定しました)。ただし、 のテキスト ボックス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>
これは次のようにレンダリングされます。