单选按钮在我的GridView中不起作用

时间:2015-09-24 16:39:33

标签: c# gridview radio-button

我有一个GridView。每行都有文本框单选按钮(3个选项)

如果选择了radiobutton,那么textbox.text = ""

问题:当调用OnSelectedIndexChanged时,网格中的每个文本框都变为空白

如何只清除我选择了无线电按钮的行的文本框?

ASPX标记

<asp:GridView id="mygrid" Runat="server">
   <Columns>            
       <asp:TemplateField>
           <ItemTemplate>
               <asp:RadioButtonList ID="hi" runat="server" 
                    OnSelectedIndexChanged="zzz" AutoPostBack="true" />
               <asp:TextBox ID="txPregoeiro" runat="server" Text="." />
           </ItemTemplate>
       </asp:TemplateField>
   </Columns>
</asp:GridView>

C#代码隐藏

protected void zzz(object sender, EventArgs e)
{
    foreach (GridViewRow _row in mygrid.Rows)
    {
        if (_row.RowType == DataControlRowType.DataRow)
        {
            RadioButtonList hi = (RadioButtonList)_row.FindControl("hi");
            TextBox txPregoeiro = (TextBox)_row.FindControl("txPregoeiro");
            txPregoeiro.Text = string.Empty;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您不检查单选按钮列表是否包含所选项目。因此,您始终将文本框文本设置为空白。将功能更改为:

    GridViewRow _row = mygrid.SelectedRow;
    if (_row.RowType == DataControlRowType.DataRow)
    {
        RadioButtonList hi = (RadioButtonList)_row.FindControl("hi");
        if(hi.SelectedItem != null) //This checks to see if a radio button in the list was selected
        {
            TextBox txPregoeiro = (TextBox)_row.FindControl("txPregoeiro");
            txPregoeiro.Text = string.Empty;
        }   
    }

答案 1 :(得分:1)

您目前正在为清除每个文本框的每一行执行此操作。试一试。

 protected void zzz(object sender, EventArgs e)
    {
        var caller = (RadionButtonList)sender;

        foreach (GridViewRow _row in mygrid.Rows)
        {
            if (_row.RowType == DataControlRowType.DataRow)
            {
                RadioButtonList hi = (RadioButtonList)_row.FindControl("hi");

                if(hi == caller) 
                {
                  TextBox txPregoeiro = (TextBox)_row.FindControl("txPregoeiro");
                  txPregoeiro.Text = string.Empty;
                  break; //a match was found break from the loop
                }
            }
        }
    }