0

Gridview连续多个单选按钮

我在 Gridview 中连续三个 RadioButtons。我需要得到检查状态,但是当你选择一个按钮时它永远不会改变。这是代码:

    <asp:TemplateField>
         <ItemTemplate>
               <asp:RadioButton runat="server" GroupName="venc" ID="rdo0" Checked="True" />
         </ItemTemplate>
       </asp:TemplateField>

       <asp:TemplateField HeaderText="2° Venc.">
         <ItemTemplate>
              <asp:RadioButton runat="server" GroupName="venc" ID="rdo3"    />
          </ItemTemplate>
       </asp:TemplateField>


    protected void gvCuotas_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        for (int i = 2; i < 5; i++)
        {
            radio = (RadioButton)fila.FindControl("rdo" + i);
            if (radio.Checked)
               {
                  vencimiento = i; //never gets here.
                  break;
               }
            }
        }
   }

ASP。

<asp:GridView ID="gvCuotas" runat="server" AutoGenerateColumns="False" 
                        Caption="Cuotas Pendientes"  capCellSpacing="2" CellPadding="2" 
                    HeaderStyle-BackColor="Aqua" HorizontalAlign="Center" Width="80%" 
                        BorderStyle="Solid" onrowcommand="gvCuotas_RowCommand" 
                        onrowdatabound="gvCuotas_RowDataBound" >

在后面:

public partial class Cuota1 : System.Web.UI.Page
{
    DataClasses1DataContext baseAlumnos = new DataClasses1DataContext();

    protected void Page_Load(object sender, EventArgs e)
    {

        var cuotas = from p in baseAlumnos.Cuotas where p.Pagado.Equals(0) 
                     select new { p.Mes, p.Observacion, p.Vencimientos, p.Pagado};


        gvCuotas.DataSource = cuotas;
        gvCuotas.DataBind();
    }
4

1 回答 1

1

修改您的标记以在 gridview 中包含 OnRowCommand 事件处理程序

<asp:GridView runat="server" ID="gv" AutoGenerateColumns="False" OnRowCommand="OnRowCommand">
    <Columns>
        <asp:TemplateField>
         <ItemTemplate>
               <asp:RadioButton runat="server" GroupName="venc" ID="rdo0" Checked="True"/>
         </ItemTemplate>
       </asp:TemplateField>

       <asp:TemplateField HeaderText="2° Venc.">
         <ItemTemplate>
              <asp:RadioButton runat="server" GroupName="venc" ID="rdo3"    />
          </ItemTemplate>
       </asp:TemplateField>
       <asp:ButtonField HeaderText="Confirm" ButtonType="Button" />
    </Columns>
</asp:GridView>

这是 OnRowCommand 事件处理程序的代码

protected void OnRowCommand(object sender, GridViewCommandEventArgs e)
{

    int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow gvRow = gv.Rows[index]; 

    for (int i = 2; i < 5; i++)
    {
        var radio = (RadioButton)gvRow.FindControl("rdo" + i);
        if (radio!=null && radio.Checked)
           {
              //This point will hit for the selected radiobutton 
              break;
           }
    }
}

请确保您仅在页面加载时绑定数据,而不是在页面回发时绑定数据。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack){ 
        var cuotas = from p in baseAlumnos.Cuotas where p.Pagado.Equals(0) 
                 select new { p.Mes, p.Observacion, p.Vencimientos, p.Pagado};
        gvCuotas.DataSource = cuotas;
        gvCuotas.DataBind();
    }
}
于 2012-11-05T00:10:31.920 回答