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”,如果用户单击第二项,则为“agree2”

于 2012-07-05T19:13:04.190 回答