0

グリッドビューの複数のラジオボタンを連続して表示する

Gridview に 3 つの 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

マークアップを変更して、グリッドビューに 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 に答える