网格视图内的单选按钮控制不触发oncheckedchanged事件

时间:2015-09-22 00:00:18

标签: asp.net gridview webforms

我的应用程序中有以下代码我有一个gridview控件提供我的网格视图我有单选按钮定义为templetefield。

<asp:View ID="View3" runat="server">

    <script type = "text/javascript">
        function RadioCheck(rb) {
            var gv = document.getElementById("<%=grdAllPartsRequestList.ClientID%>");
            var rbs = gv.getElementsByTagName("input");
            var row = rb.parentNode.parentNode;
            for (var i = 0; i < rbs.length; i++) {
                if (rbs[i].type == "radio") {
                    if (rbs[i].checked && rbs[i] != rb) {
                        rbs[i].checked = false;
                        break;
                    }
                }
            }
        } 
    </script>

    <asp:TemplateField>

        <ItemTemplate>
            <asp:RadioButton ID="rbSelected" runat="server" AutoPostBack="True" 
                oncheckedchanged="rbSelected_CheckedChanged" GroupName="RequestSelection" onclick="RadioCheck(this);" />
            <asp:HiddenField ID="HiddenField1" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
</<asp:View>

背后的代码.CS

protected void rbSelected_CheckedChanged(object sender, EventArgs e)
{

}

现在我的问题是当我点击事件没有触发的单选按钮时运行我的页面。 oncheckedchanged没有被解雇。

令人惊讶的是,相同的功能在网格视图中的另一个页面中工作正常。

我在网上搜索了这个答案。但到目前为止还没有成功。我的主页面中有更新面板..我尝试使用UpdateMode="Always"ChildrenAsTriggers="true",但到目前为止没有任何问题请帮助!

1 个答案:

答案 0 :(得分:0)

试试这个,

   void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
      {

        if(e.Row.RowType == DataControlRowType.DataRow)
        {

          Radiobutton rb = e.Row.FindControl("rbSelected") as Radiobutton;
          rb.oncheckedchanged += this.rbSelected_CheckedChanged;

        }

  }

该事件将被添加到GridView的rowdatabound事件的radiobutton ...

希望这可以帮助你...