[英]How to set a DataGrid column to DatePicker input programmatically
[英]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.