2016-03-21 79 views
1

嗨我想綁定我的GridView從我創建自己的數據表。綁定Gridview的項目asp.net

這是有效的,但我的專欄是重複的,我不明白爲什麼。

這裏是我的GridView:

<asp:GridView runat="server" ID="GvCalculSelect" CssClass="gridView" HorizontalAlign="Center"> 
       <Columns> 
        <asp:BoundField DataField="CalculName" HeaderText="CalculName" /> 
        <asp:TemplateField HeaderText="ResultValue"> 
         <ItemTemplate> 
          <asp:CheckBox ID="CbResultValue" runat="server" Checked='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "ResultValue").ToString()) %>'/> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 

這裏,它是我的CS代碼的一部分:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     BindGrid(); 
    } 
} 

protected void BindGrid() 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add(new DataColumn("CalculName", typeof(string))); 
    dt.Columns.Add(new DataColumn("ResultValue", typeof(Boolean))); 
    dt.Rows.Add("Test", true); 
    GvCalculSelect.DataSource = dt; 
    GvCalculSelect.DataBind(); 
} 

結果是:
enter image description here

如何解決呢?我想當我綁定我的gridview正在採取我的兩個「dt.columns.add」。我只想讓我的calculName領域,我resultValue複選框

感謝您的幫助

+0

確保您自動生成列設置爲false。 也對bind()方法將其添加爲您的第一線 'GvCalculSelect.DataSource = NULL;' – MethodMan

回答

2

發生這種情況,因爲你正在創建自己的表,並將其綁定到GridView和GridView中的明確定義2列並將數據字段綁定到它們。

做1或另一個,但不是兩個。因此,要明確您是否想要控制列的外觀,您應該將autogeneratecolumns屬性設置爲false。保留前端綁定列,但是可以將它們從數據表中刪除,並簡單引用數據表中的相關字段。

或者,將autogeneratecolumns設置爲true,然後在代碼後面的數據表中構建列,然後按原樣將其綁定。

+0

是的,這就是我想,但我不知道正確直接一個DataTable數據插入我的GridView沒有通行證,我創建自己 – Ironboy07

+0

@ Ironboy07 - 聽起來像你想在什麼列的樣子等,所以,你不需要在你的數據表中創建新列的一些控制。設置的AutoGenerateColumns爲false,只需填寫的數據表,將其綁定,然後使用綁定列和模板列引用正確的數據。 – sr28

+0

是的,謝謝它的作品。我只是像你說的那樣將autogeneratecolumns設置爲false。我忘了這個參數...感謝您的快速回答! – Ironboy07

1

這是因爲GridView.AutoGenerateColumns Property

您需要將其值設置爲false。

爲了您refrence根據MSDN

如果將此屬性設置爲true,並設置的ItemType屬性設置爲 型號,產生DynamicField控制。

如果您未設置ItemType屬性,BoundField控件將生成 。如果你不想DynamicField控件,您有以下選擇:

  1. 設置ColumnsGenerator屬性爲空在Page_Load事件 處理程序。在這種情況下,會生成BoundField控件。

  2. 通過創建自定義代碼來自動生成字段,並分配您自己的ColumnsGenerator類並將其實例分配給控件。

  3. 將AutoGenerateColumns設置爲false。在這種情況下,不會生成 字段,並且您必須使用諸如BoundField或ImageField的控件 手動指定字段。

  4. 不要設置的ItemType屬性。在這種情況下,會生成BoundField控件 。