2013-02-07 84 views
1

我使用的數據表作爲數據源爲網格視圖生成用於複選框列在網格視圖新列

 DataTable table = new DataTable(); 
    table.Columns.Add("Dosage", typeof(int)); 
    table.Columns.Add("Drug", typeof(string)); 
    table.Columns.Add("Patient", typeof(string)); 
    table.Columns.Add("Select",typeof(bool)); 


    // 
    // Here we add five DataRows. 
    // 
    table.Rows.Add(25, "Indocin", "David"); 
    table.Rows.Add(50, "Enebrel", "Sam"); 
    table.Rows.Add(10, "Hydralazine", "Christoff"); 
    table.Rows.Add(21, "Combivent", "Janet"); 
    table.Rows.Add(100, "Dilantin", "Melanie"); 


    GridView2.DataSource = table; 


    GridView2.DataBind(); 

在頁面加載 ,我想在網格來創建新的列,以添加單選按鈕

實際上我想提交數據庫中選中的複選框的行值。

回答

1

如果要向GridView添加新列,則應將其添加到DataSource。無論是通過從數據庫中選擇另一列,或者如果您使用內存中的DataTable(通過添加另一列DataColumn)。但我認爲你已經添加了列(Select)。

然後使用TemplateField添加RadioButton並將其與列綁定。

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView2_RowDataBound" > 
     <Columns> 
      <asp:TemplateField HeaderText="Select"> 
        <ItemTemplate> 
        <asp:RadioButton ID="rbSelect" runat="server" /> 
        </ItemTemplate> 
      </asp:TemplateField> 

您可以使用RowDataBound根據數據源,以檢查它:

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var rbSelect = (RadioButton)e.Row.FindControl("rbSelect"); 
     var row = ((DataRowView)e.Row.DataItem).Row; 
     rbSelect.Checked = row.Field<bool>("Select"); 
    } 
} 
+1

當我使用項目模板添加單選按鈕..然後DataTable中不能添加爲數據源,我需要BCZ我是會在循環中添加隨機行。 –

+0

@InderpalSingh:你可以使用它作爲DataSource。只需手動設置AutoGenerateColumns = False併爲標記中的每個列添加'TemplateFields'或'BoundFields'(如上所示)即可。您可以在aspx標記上使用'Eval'或'Bind'來將數據綁定到列上,或者像上面顯示的那樣在'RowDataBound'中以編程方式從代碼隱藏中設置它。 –

+0

非常感謝。我是gonaa將數據添加到RowDataBound上的每一列。 –