gridview 自定义条件使checkbox不可选

zlhhlz 2014-06-28 08:54:04

我在做一个学生选课功能,把课表从数据库中读出来放到gridview,在gridview中使用模版列添加checkbox,课表中有已选人数,和课程容量两个字段,我希望实现课程人数已满后学生不能勾选,但能在gridview中看到已满人的课程信息。。。。。
已查了很多资料没查到,求大神指点
...全文
236 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlhhlz 2014-10-06
  • 打赏
  • 举报
回复
非常感谢大家的热心,下次再不会这么粗心了,谢谢大家
zlhhlz 2014-10-06
  • 打赏
  • 举报
回复
抱歉,问题在同学帮助下解决了,我粗枝大叶忘了这个帖子。谢谢楼上的各位了!!
没来 2014-06-29
  • 打赏
  • 举报
回复
引用 5 楼 ta_wuhen 的回复:
可以先绑定数据,然后判断课程是否满,满了就把checkbox设为不可用,或者把checkbox隐藏并显示本课程已慢~
正解。在绑定“已选”后,在ItemTemplate的控件中写一个OnDataBinding事件进行判断

<asp:GridView ID="grid" runat ="server" Width ="100%" AllowPaging ="True" AllowSorting ="True" 
            ShowHeaderWhenEmpty ="True" AutoGenerateColumns="False" PageSize ="20" 
            DataKeyNames="Id" >
            <Columns>
                <asp:TemplateField HeaderText="选择" >
                    <ItemTemplate>
                        <asp:CheckBox Id="chk" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>

              '其他的TemplateField
               <asp:TemplateField HeaderText="选择" >
                    <ItemTemplate>
                        <asp:Label Id="lblAvailable" runat="server" Text='<%# Bind("容量"") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="已选" >
                    <ItemTemplate>
                        <asp:Label ID="lblChosenCount" runat="server" Text='<%# Bind("已选"") %>' OnDataBinding="DoThisJob"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
程序代码

        Protected Sub DoThisJob (ByVal sender As Object, ByVal e As EventArgs)
                 Dim lbl As Label = DirectCast(sender, Label)
                 Dim row As GridViewRow = DirectCast(lbl.NamingContainer, GridViewRow)
                 Dim lblA As Label = row.FindControl("lblAvailable")
                 If Convert.ToInt32(lbl.Text) >= Convert.ToInt32(lblA.Text) Then
                             Dim chk As CheckBox = row.FindControl("chk")
                             chk.Enabled = False
                             chk.ToolTip = "学员已满"
                  End If
           End Sub
选择课程并保存后,绑定一次GridView即可。
我现在在路上 2014-06-28
  • 打赏
  • 举报
回复
不用写代码了吧?
我现在在路上 2014-06-28
  • 打赏
  • 举报
回复
可以先绑定数据,然后判断课程是否满,满了就把checkbox设为不可用,或者把checkbox隐藏并显示本课程已慢~
  • 打赏
  • 举报
回复
在C#代码中设置Enable属性为false
天空丶蒋 2014-06-28
  • 打赏
  • 举报
回复
一种, 你可以判断课程已满后就将按钮隐藏,一种就是禁用。
wangnaisheng 2014-06-28
  • 打赏
  • 举报
回复

 protected void GV_CheckFree_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //对新行限制
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if()//判断选课人数
               e.Row.Cells[1].Enabled = false;//选择列不可用
        }
     }
wangnaisheng 2014-06-28
  • 打赏
  • 举报
回复
设置选课人数满的checkbox列的enable为false即可

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧