簡體   English   中英

DataGrid以編程方式設置列寬

[英]DataGrid set column width programmatically

我有以下代碼:

protected void Page_Load(object sender, EventArgs e)
{
    var src1 = Page.DataContext.ExtranetTypes;
    var res1 = from row in src1 select row;

    var src2 = Page.DataContext.ExtranetDocuments;
    var res2 = from row in src2 select row;

    var query = from r1 in res1
                join r2 in res2 on r1.ID equals r2.FileTypeID
                select new { r2.PublicationDate, Title = r2.Title, Type = r1.Title };

    DocumentGrid.DataSource = query;
    DocumentGrid.DataBind();
}

我想設置列的寬度,但是由於查詢尚未執行,所以無法設置每列的寬度。

DocumentGrid.Columns[1].ControlStyle.Width

給出錯誤,因為在執行查詢時會計算列,並且由於后期綁定,它可能在最晚的時刻執行。 有什么辦法可以設置這些列的寬度?

當數據源需要顯示某些內容時,將生成一個數據網格或網格視圖。 如果沒有要顯示的內容,則不會在頁面上呈現網格。 但是,如果要在沒有數據的情況下顯示網格,則添加一個骨架數據表或列表以呈現網格,然后您的代碼將起作用。 另外,如果粘貼網格的HTML,那將是一個很大的幫助

我對問題的評論之一建議使用BoundFields。

結果:

<asp:GridView ID="DocumentGrid" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundField HeaderText="Publication Date" DataField="PublicationDate" ItemStyle-Width="120px"/>
        <asp:BoundField HeaderText="Title" DataField="Title" ItemStyle-Width="400px"/>
        <asp:BoundField HeaderText="Type" DataField="Type" ItemStyle-Width="100px"/>
    </Columns>
</asp:GridView>

只需確保將autogenerate列設置為false,否則您將獲得額外的列。

采用

DocumentGrid.DataSource = query.ToList();

那么您可以通過編程設置寬度。 這是因為query.ToList()提交數據,並使它們可由DocumentGrid.DataSource屬性讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM