0

ラジオボタンリストにonselectedindexchangedeventを適用しますが、ラジオボタンをクリックすると、ラジオボタンが移動を選択せず​​、選択してから選択を解除します。また、postback = trueを設定しますが、起動しません。

**.aspx** 

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
                <Columns>
                <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                    <asp:RadioButtonList ID="RadioButtonList1" runat="server"   
AutoPostBack="true"RepeatDirection="Horizontal"OnSelectedIndexChanged="clicked"> 

                <asp:ListItem Value="agree" Selected="True" ></asp:ListItem>
                   <asp:ListItem Value="agree"></asp:ListItem>
                    </asp:RadioButtonList>

                </ItemTemplate>

                </asp:TemplateField>

                </Columns>
                </asp:GridView>


**.aspx.cs**



 public void clicked(object sender, EventArgs arg)
    {

        test t = new test();
        questiondal d = new questiondal();

        GridViewRow row= (( RadioButtonList  )sender).NamingContainer as GridViewRow;
  RadioButtonList list= (RadioButtonList )row.FindControl("Radio");
list.SelectedIndexChanged();
 Label4.Text= list.SelectedValue;




    }
4

1 に答える 1

0

サーバー側のコードを次のように変更します。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = new List<string> {"test"};
        GridView1.DataBind();
    }      
}
public void clicked(object sender, EventArgs arg)
{
    RadioButtonList list = (RadioButtonList)sender;     
    var t = list.SelectedValue;
    Label1.Text = t;
}  

次のように、リスト項目ごとに異なる値を設定します。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>                    
                <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal"
                    OnSelectedIndexChanged="clicked" AutoPostBack="true" >
                    <asp:ListItem Value="agree1" Text="a"></asp:ListItem>
                    <asp:ListItem Value="agree2" Text="b"></asp:ListItem>
                    <asp:ListItem Value="agree3" Text="c"></asp:ListItem>
                </asp:RadioButtonList>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

したがって、ユーザーが最初の項目をクリックすると、Label4.Text は「agree1」になり、ユーザーが 2 番目の項目をクリックすると、「agree2」になります。

于 2012-07-05T19:13:04.190 に答える