2010-04-29 44 views
7

我綁定表到GridView在asp.net這樣綁定到一個DataTable

grdIssues.DataSource = mdtIssues; 

grdIssues.DataBind(); 

問題是我無法再控制列的寬度,asp.net時如何設置gridview的列寬似乎決定自己應該是​​什麼寬度。方法如

grdIssues.Columns[0].ItemStyle.Width = 100; 
grdIssues.Columns[1].ItemStyle.Width = 100; 

不起作用,因爲列是動態創建的。我不相信有沒有辦法做到這一點,手動創建每一列和填充每一行。

回答

6

您不必手動創建的列設置它們的寬度,你可以這樣做

foreach (DataControlField column in OrdersGV.Columns) 
    { 
     column.ItemStyle.Width = Unit.Pixel(100); 
    } 
+0

該失敗編譯我得到異常 錯誤'object'不包含'ItemStyl的定義e',並且沒有可以找到接受類型'object'的第一個參數的擴展方法'ItemStyle'(你是否缺少使用指令或程序集引用?) – 2010-04-30 14:16:54

+0

我只是編輯答案,請嘗試。確保在數據綁定網格後執行此操作 – alejandrobog 2010-04-30 14:29:35

-1

我會做這樣的:

foreach (DataControlField field in grdIssues.Columns) 
{ 
    field.HeaderStyle.Width = 100; 
} 
+0

此編譯通過不起作用。只有我手動添加的一列,一個按鈕,在列的集合中。 Bob – 2010-04-30 14:18:33

+0

你在哪些事件中運行代碼?你無法在Page_Load中完成。使用grdIssues的Databound事件。 – 2010-04-30 22:05:41

+0

上面的代碼也不適用於我。我們該如何處理? – 2012-06-11 06:31:41

0

我喜歡回答我自己只要我能找到問題,以便將來的用戶搜索該線索將找到答案。

我找不到直接做我想做的事。不過,我發現如果我自己定義列,我可以改變屬性。在這個例子中,我想要中心列數據。像這樣的東西。

BoundField bdfRaisedDate = new BoundField(); 
clsUtilities.SetBoundFieldCenter(ref bdfRaisedDate, "RaisedDateShort", "Opened", "RaisedDate"); 

grdIssues.Columns.Add(bdfRaisedDate); 

grdIssues.DataSource = mdtIssues; 

grdIssues.DataBind(); 

public static void SetBoundFieldCenter(ref BoundField bdfAny, string pDataField, string pHeadingValue, string pSortExpression) 
{ 
     bdfAny.DataField = pDataField; 
     bdfAny.HeaderText = pHeadingValue; 
     bdfAny.SortExpression = pSortExpression; 
     bdfAny.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; 
     bdfAny.ItemStyle.HorizontalAlign = HorizontalAlign.Center; 
} 
3

我能夠與RowDataBound事件來改變某一Gridview柱(結合到Datatable)的寬度:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { 
    e.Row.Cells[0].Attributes["width"] = "200px"; 
} 
0

我做到了爲:

gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px"; 
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px"; 
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px"; 
相關問題