[ASP.NET小技巧]GridView加入CheckBox,並驗證最少勾一項目

摘要:[ASP.NET小技巧]GridView加入CheckBox,並驗證最少勾一項目

 

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="SelectCheckBox_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>未命名頁面</title>

    <script type="text/javascript">
        var TargetBaseControl = null;
        
        window.onload = function()
        {
            try
            {
                //get target base control.
                TargetBaseControl = document.getElementById('<%= me.GridView1.ClientID %>');
            }
            catch(err)
            {
                TargetBaseControl = null;
            }
        }
        
        function TestCheckBox()
        {              
            if(TargetBaseControl == null) return false;
            //get target child control.
            var TargetChildControl = "chkBxSelect";
            
            //get all the control of the type INPUT in the base control.
            var Inputs = TargetBaseControl.getElementsByTagName("input");  
            
            for(var n = 0; n < Inputs.length; ++n)
                if(Inputs[n].type == 'checkbox' && Inputs[n].id.indexOf(TargetChildControl,0) >= 0 && Inputs[n].checked)
                    return true;        
            
            alert('Select at least one checkbox!');
            return false;
        }
    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField HeaderText="n" DataField="sno">
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="50px" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    </asp:BoundField>
                    <asp:TemplateField HeaderText="Select">
                        <ItemTemplate>
                            <asp:CheckBox ID="chkBxSelect" runat="server" />
                        </ItemTemplate>
                        <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:Button ID="btnPost" runat="server" Text="Post" OnClientClick="javascript:return TestCheckBox();"
                OnClick="btnPost_Click" />
            <hr />
            <asp:Label ID="lblMsg" runat="server" Font-Bold="True" ForeColor="Red" Width="268px"></asp:Label>
        </div>
    </form>
</body>
</html>

 


Partial Class SelectCheckBox_Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Me.IsPostBack Then
            Me.GridView1.DataSource = GetDataSource
            Me.GridView1.DataBind()
        End If

    End Sub


    Function GetDataSource()
        Dim dTable As Data.DataTable = New Data.DataTable
        Dim dRow As Data.DataRow
        Dim rnd As Random = New Random
        dTable.Columns.Add("sno")
        For i As Integer = 0 To 10
            dRow = dTable.NewRow
            dRow("sno") = i & "."
            dTable.Rows.Add(dRow)
            dTable.AcceptChanges()
        Next
        Return dTable
    End Function


    Protected Sub btnPost_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPost.Click
        lblMsg.Text = "送出成功!"
    End Sub



End Class