GridView中CheckBox,RadioButton并存的同时且有相互关系

目的:  在GridView中一列存放CheckBox,一列存放RadioButton;并且选择了CheckBox才能激活同行的RadioButton.

 

前台文件

<asp:GridView ID="GridView1" runat="server" Width="99%" AutoGenerateColumns="False"
                            SkinID="GridViewskin" onrowdatabound="GridView1_RowDataBound">
                            <Columns>
                                <asp:TemplateField HeaderText="编号" ItemStyle-Width="25%">
                                    <ItemTemplate>
                                        <%#Eval("ID")%>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="名称" ItemStyle-Width="25%">
                                    <ItemTemplate>
                                     <%#(Eval("Name"))%>
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="设置" ItemStyle-Width="25%">
                                    <ItemTemplate>
                                     <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"
                                            oncheckedchanged="CheckBox1_CheckedChanged" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="默认" ItemStyle-Width="25%">
                                    <ItemTemplate>
                                    <asp:RadioButton ID="RadioButton1" runat="server" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>

                        </asp:GridView>

 

<script type="text/javascript">
    var last=null;
    function single(obj)
    {
      if(last==null)    //第一次选择RadioButton时赋id值给last
      {
         last=obj.id; 
      }
      else            //第一次以后的每一次都在这运行,把上此的RadioButton.Checked=false,记下此次的obj.name
      {
        var lo=document.getElementById(last);
        lo.checked=false;
        last=obj.id;
      }
      obj.checked="checked";   //添加checked属性,以便在上边赋值为false
    }
    </script>

 

 

后台CS

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                RadioButton rb = (RadioButton)e.Row.FindControl("RadioButton1");
                if (rb != null)
                {
                    rb.Attributes.Add("onclick", "single(this)");  //single(obj)为js函数 
                    rb.Enabled = false;
                }
            }
        }

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                RadioButton rbtn = (RadioButton)GridView1.Rows[i].FindControl("RadioButton1");
                if (cbox.Checked == true)
                {
                    cbox.Checked = true;
                    rbtn.Checked = false;
                    rbtn.Enabled = true;
                }
                else
                {
                    rbtn.Checked = false;
                    rbtn.Enabled = false;
                }
            }
        }

 

posted on 2011-02-18 17:56  秋天  阅读(434)  评论(0编辑  收藏  举报

导航