2012-10-25 35 views
-1

我正在构建项目,并且正在创建动态数据表并将其分配给gridview。我需要为表格的每一行添加一个单选按钮。但我厌倦了它,无法让它工作。有人帮助,请....C#ASP.NET中DataTable中的动态单选按钮

if (dt == null) 
{ 
    dt = new DataTable("Shedules"); 
    DataColumn c0 = new DataColumn("Radio", typeof(RadioButton)); 
    DataColumn c1 = new DataColumn("SID", typeof(System.Int32)); 
    DataColumn c2 = new DataColumn("FID", typeof(System.Int32)); 
    DataColumn c3 = new DataColumn("FROM", typeof(System.String)); 

    dt.Columns.Add(c0); 
    dt.Columns.Add(c1); 
    dt.Columns.Add(c2); 
    dt.Columns.Add(c3); 

    dt.PrimaryKey = new DataColumn[] { c1 }; 
} 


foreach (AgentPortal.SriLankanWebService.Shedule shedule in air1Response) 
{ 
    DataRow dr = dt.NewRow(); 

    RadioButton rb1 = new RadioButton(); 
    rb1.GroupName = "depart"; 
    rb1.ID = shedule.Sid.ToString(); 
    dr["Radio"] = rb1; 

    dr["SID"] = (int)shedule.Sid; 
    dr["FID"] = (int)shedule.Fid; 
    dr["FROM"] = (String)shedule.FromLocation; 
    dt.Rows.Add(dr); 
} 

GridView1.DataSource = dt; 
GridView1.DataBind(); 
+0

您的变量没有表现出足够的含义 - 是什么air1Response?你想达到什么目的? – codingbiz

+1

你可以把单选按钮放在GridView本身--DataTable是为了存储数据而不是控件 – codingbiz

+0

air1Response是我从Web服务获得的项目列表。 –

回答

0

包括单选按钮组的单选按钮列表中你的GridView

<asp:GridView ID="GridView1" runat="server"> 
<Columns> 

    <asp:TemplateField> 

     <asp:RadioButtonList runat="server" ID="scheduleList" DataTextField="ScheduleName" 
      DataValueField="ScheduleID" /> 

     </asp:TemplateField> 

    <asp:BoundField DataField="SId" HeaderText="SID" /> 
    <asp:BoundField DataField="FId" HeaderText="FID" /> 
    <asp:BoundField DataField="FROMLocation" HeaderText="FROM" /> 
</Columns> 
</asp:GridView> 

在代码beind

protected void Page_Load(object sender, EventArgs e) 
{ 
    GridView1.DataSource = air1Response; //bind your airResponse directly to GridView 
    GridView1.DataBind(); 

} 

protected void gvSchoolClasses_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    RadioButtonList scheduleList = (RadioButtonList) e.Row.FindControl("scheduleList"); 
    scheduleList = air1Response; 
    scheduleList.DataBind(); 
} 

了解更多关于GridView Events