0

プログラムで設定した自動生成された列を持つグリッドビューがあり、列幅をフォーマットしたいと思います。これは、コードビハインドのグリッドビューのコードです...

If Not Page.IsPostBack Then
    Dim budgetTable As New DataTable("Budgets")

    budgetTable.Columns.Add("Approval Date", GetType(Date))
    budgetTable.Columns.Add("Total Amount", GetType(String))
    budgetTable.Columns.Add("Comments", GetType(String))
    budgetTable.Columns.Add("Initials", GetType(String))

    Try
        For i As Integer = 0 To 0
            Dim tableRow As DataRow = budgetTable.NewRow()
            tableRow("Approval Date") = Date.Today
            tableRow("Total Amount") = ""
            tableRow("Comments") = ""
            tableRow("Initials") = ""
            budgetTable.Rows.Add (tableRow)
        Next
        Session("BudgetsTable") = budgetTable
        BindData()
    Catch ex As Exception

    End Try
End If

そしてこれはhtml側のグリッドビューです:

<asp:GridView ID="gvOLIAdj" runat="server" CssClass="td8" CellPadding="4" ForeColor="#333333" PageSize="2" ViewStateMode="Enabled">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />

    <Columns>
        <asp:CommandField EditText="Add" ShowEditButton="True" />
    </Columns>

    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#003399" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="White" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
4

2 に答える 2

1

- 編集 -

(OPからのコメントを読んだ後、古いコンテンツを削除しました。それは役に立たないためです)

RowDataBoundイベントを使用して、幅(またはその他のプロパティ)を設定してみてください。

未テストのコード:

Protected Sub gvOLIAdj_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvOLIAdj.RowDataBound
    If (e.Row.RowType = DataControlRowType.Header) Then
        e.Row.Cells(0).Width = 100  '100 pixels
        e.Row.Cells(1).Width = 50
        e.Row.Cells(2).Width = 200
        e.Row.Cells(3).Width = 150
    End If
End Sub

上記が機能しない場合は、に設定してみてくださいe.Row.RowType = DataControlRowType.DataRow

于 2012-05-30T13:28:50.450 に答える
0

私はそれを達成するためにスタイルシートを使用します:

.td8 td:nth-child(3) {
    width: 100px;
}

3番目の列を100pxにすることを想定しています。これはCSS3オプションであるため、新しいブラウザでのみ機能します。

編集: @Pradeep Kumarに行ったコメントを読んで、列に幅を適用するのが早すぎる可能性があります。Page_PreRenderGridViewがバインドおよび作成された後、イベントでこれらの変更を行ってみてください。GridViewの列は、RowItemCreatedイベントが完全に完了するまで存在しないことに注意してください。

于 2012-05-30T13:32:50.563 に答える