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   秋天  阅读(438)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2011年2月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 1 2 3 4 5
6 7 8 9 10 11 12
点击右上角即可分享
微信分享提示