none
GRIDVIEWの項目表示位置について RRS feed

  • 質問

  • <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
                CellPadding="3" DataSourceID="ObjectDataSource1" GridLines="Horizontal">
                <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
                <Columns>
                    <asp:BoundField DataField="YM_D" HeaderText="日付" SortExpression="YM_D"
                        InsertVisible="False" ReadOnly="True" >
                    <ItemStyle Width="20px" Font-Names="MS ゴシック" Font-Size="Small"
                        HorizontalAlign="Right" />
                    </asp:BoundField>
                    <asp:BoundField DataField="YM_DY" HeaderText="曜日" InsertVisible="False"
                        ReadOnly="True" SortExpression="YM_DY">
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Center"
                        Width="20px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="S_KINMEI" HeaderText="件名"
                        SortExpression="S_KINMEI" >
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Left"
                        Width="200px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINSTM" HeaderText="勤務開始時間" ReadOnly="True"
                        SortExpression="C_KINSTM" >
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Center"
                        Width="80px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINETM" HeaderText="勤務終了時間"
                        SortExpression="C_KINETM" InsertVisible="False" ReadOnly="True" >
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Center"
                        Width="80px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINMKTIM" HeaderText="休憩時間"
                        SortExpression="C_KINMKTIM" InsertVisible="False" ReadOnly="True" >
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Center"
                        Width="80px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINSETMA" HeaderText="残業時間(A)"
                        SortExpression="C_KINSETMA" >
                    <ItemStyle Font-Names="MS ゴシック" Font-Size="Small" HorizontalAlign="Center"
                        Width="80px" />
                    </asp:BoundField>
                </Columns>
                <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
                <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right"
                    Wrap="False" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
                <AlternatingRowStyle BackColor="#F7F7F7" />
            </asp:GridView>
            <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
                BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
                CellPadding="3" DataSourceID="ObjectDataSource2" GridLines="Horizontal">
                <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
                <Columns>
                    <asp:BoundField DataField="C_KJDAY" HeaderText="日付" SortExpression="C_KJDAY" >
                    <ItemStyle HorizontalAlign="Right" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="20px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="S_KJDY" HeaderText="曜日" SortExpression="S_KJDY" >
                    <ItemStyle HorizontalAlign="Center" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="20px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="S_KINMEI" HeaderText="件名"
                        SortExpression="S_KINMEI" >
                    <ItemStyle HorizontalAlign="Left" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="200px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINSTM" HeaderText="勤務開始時間"
                        SortExpression="C_KINSTM" >
                    <ItemStyle HorizontalAlign="Center" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="80px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="C_KINETM" HeaderText="勤務終了時間"
                        SortExpression="C_KINETM" >
                    <ItemStyle HorizontalAlign="Center" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="80px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="N_CASHMNY" HeaderText="費用"
                        SortExpression="N_CASHMNY" >
                    <ItemStyle HorizontalAlign="Right" Font-Names="MS ゴシック" Font-Size="Small"
                        Width="161px" />
                    </asp:BoundField>
                </Columns>
                <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
                <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
                <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
                <AlternatingRowStyle BackColor="#F7F7F7" />
            </asp:GridView>

    上記のように2つのGRIDVIEWを上下に並べて表示しているのですが、罫線(外枠)の位置がずれてしまいます。
    GRIDVIEW1の各項目のピクセルは20、20、200、80、80、80、80、80で登録し、
    GRIDVIEW2は20、20、200、80、80、161で登録しています。

    で、質問なんですが、
    GRIDVIEWで表示される各項目はGRIDVIEWタスク→列の編集→選択されたフィールド→ItemStyle→Width
    で指定したピクセルの幅で表示されるのでしょうか?もしくは何か条件がありますか?

    ※ちなみにGIRIDVIEW2の「費用」のピクセルを166にすると上下のGRIDVIEWの外枠は一致します。

    2008年12月3日 9:41

回答

  • 何故 GridView1 と GridView2 の枠線の右側が少しずれるかということですか?

     

    それなら BorderWidth="1px" と CellPadding="3" の分だと思います。試しに
    BorderWidth="0" と CellPadding="0" としてみてください。たぶん、ぴったり
    そろうと思います。

    2008年12月3日 11:34

すべての返信

  • 何故 GridView1 と GridView2 の枠線の右側が少しずれるかということですか?

     

    それなら BorderWidth="1px" と CellPadding="3" の分だと思います。試しに
    BorderWidth="0" と CellPadding="0" としてみてください。たぶん、ぴったり
    そろうと思います。

    2008年12月3日 11:34
  • なるほど!CellPaddingを理解していませんでした。

    BorderStyle="None"、GridLines="Horizontal"なので、
    CELL間(横)のBorderは関係ないはずなのになぁと思いつつ
    BorderWidthの1pxが必要なのかと思い、160に+1していたのですが、合わないはずです。
    166(160+3+3)で位置のあう理由が分かりました。

    ありがとうございました。
    2008年12月4日 2:08