复选框HeaderTemplate中验证ItemTemplate中的CheckBox [英] CheckBox in HeaderTemplate validates ItemTemplate CheckBox

查看:548
本文介绍了复选框HeaderTemplate中验证ItemTemplate中的CheckBox的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问:

我想验证DropDownList的,如果用户选中该复选框,你可以在屏幕上一见。

问题:

那么,如何可以验证该复选框,如果用户有选择所有从标题中的复选框?
正如你可以看到屏幕两项。如果我选择所有的复选框,然后我期待fireup的验证如图屏幕之一。

输出:

画面1:

屏幕2

// ASPX

 < ASP:GridView控件ID =GV=服务器的AutoGenerateColumns =FALSE的DataKeyNames =ID
    OnRowDataBound =gv_RowDataBound>
    <柱体和GT;
        < ASP:BoundField的数据字段=IDControlStyle-WIDTH =250像素的HeaderText =IDSORTEX pression =ID/>
        < ASP:BoundField的数据字段=姓ControlStyle-WIDTH =250像素的HeaderText =姓
            SORTEX pression =名字/>
        < ASP:BoundField的数据字段=姓氏ControlStyle-WIDTH =250像素的HeaderText =姓氏
            SORTEX pression =姓氏/>
        < ASP:的TemplateField的HeaderText =拒绝>
         <&HeaderTemplate中GT;
            拒绝< BR />
            < ASP:复选框ID =checkboxall=服务器/>              < ASP:DropDownList的ID =drpPaymentMethod_header=服务器>
                    < ASP:ListItem的值= - 1>请选择理由和LT; / ASP:ListItem的>
                    < ASP:ListItem的值=0>当月< / ASP:ListItem的>
                    < ASP:ListItem的值=1>对于结束< / ASP:ListItem的>
                    < ASP:ListItem的值=2>对于旅游与LT; / ASP:ListItem的>
                < / ASP:DropDownList的>        < / HeaderTemplate中>
            <&ItemTemplate中GT;
                < ASP:复选框ID =checkbox1的CssClass =selectreject=服务器/>
                < ASP:DropDownList的ID =drpPaymentMethod=服务器>
                    < ASP:ListItem的值= - 1>请选择理由和LT; / ASP:ListItem的>
                    < ASP:ListItem的值=0>当月< / ASP:ListItem的>
                    < ASP:ListItem的值=1>对于结束< / ASP:ListItem的>
                    < ASP:ListItem的值=2>对于旅游与LT; / ASP:ListItem的>
                < / ASP:DropDownList的>
                &所述; asp的:的RequiredFieldValidator ID =RFV与InitialValue = - 1的ControlToValidate =drpPaymentMethod前景色=红SetFocusOnError =真
                    启用=假显示=动态=服务器的ErrorMessage =请选择原因>< / ASP:&的RequiredFieldValidator GT;
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < ASP:的TemplateField的HeaderText =值>
            <&ItemTemplate中GT;
                < ASP:文本框ID =txt_Value=服务器WIDTH =58px文本=0>< / ASP:文本框>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
    < /专栏>
< / ASP:GridView的>

// CS

 保护无效gv_RowDataBound(对象发件人,GridViewRowEventArgs E)
        {
            如果(e.Row.RowType == DataControlRowType.DataRow)
            {
                复选框checkbox1 = e.Row.FindControl(checkbox1)的复选框;
                的RequiredFieldValidator RFV = e.Row.FindControl(RFV)作为的RequiredFieldValidator;
                DropDownList的drpPaymentMethod =(DropDownList的)e.Row.FindControl(drpPaymentMethod);
                //你可以通过本而不是myDiv.ClientID,并从DOM元素得到ID
                checkbox1.Attributes.Add(onclick事件,UpdateValidator('+ checkbox1.ClientID +,+ drpPaymentMethod.ClientID +,+ rfv.ClientID +'););
                如果(!checkbox1.Checked)
                    drpPaymentMethod.Attributes.Add(禁用,已禁用);
            }
            如果(e.Row.RowType == DataControlRowType.Header)
            {
                复选框checkboxall = e.Row.FindControl(checkboxall)的复选框;
                //如何让这里的参考值(RFV ?????????)
                //checkboxall.Attributes.Add(\"onclick,UpdateValidatorAll('+ checkboxall.ClientID +','+ drpPaymentMethod.ClientID +','+ rfv.ClientID +'););            }
        }

// JS

  $(文件)。就绪(函数(){            VAR checkbox1 =#<%= gv.ClientID%GT;输入[ID * ='checkbox1']:勾选;
            VAR checkboxall = $(输入[ID $ ='checkboxall']);            $(checkboxall)。点击(函数(){
                如果(checkboxall.is(':检查')){
                    $('。selectreject>输入')。ATTR(选中,checkboxall.attr(选中));
                }
                其他{
                    $('。selectreject>输入')ATTR(选中,假)。
                }            });        });        功能UpdateValidator(chkID,drpID,validatorid){            //使只有复选框被选中的验证
            VAR enableValidator = $(#+ chkID)。是(:检查);            如果(enableValidator)
                $('#'+ drpID).removeAttr('禁用');
            其他
                $('#'+ drpID).attr('残疾','禁用');            变种VV = $('#'+ validatorid).VAL();
            ValidatorEnable(的document.getElementById(validatorid),enableValidator);
        }        功能UpdateValidatorAll(....)//我还没有写code此功能(选择全部复选框)


解决方案

试试这个:
ASPX:

 < ASP:GridView控件ID =GV=服务器的AutoGenerateColumns =FALSE的DataKeyNames =ID
    OnRowDataBound =gv_RowDataBound>
    <柱体和GT;
        < ASP:BoundField的数据字段=IDControlStyle-WIDTH =250像素的HeaderText =IDSORTEX pression =ID/>
        < ASP:BoundField的数据字段=姓ControlStyle-WIDTH =250像素的HeaderText =姓
            SORTEX pression =名字/>
        < ASP:BoundField的数据字段=姓氏ControlStyle-WIDTH =250像素的HeaderText =姓氏
            SORTEX pression =姓氏/>
        < ASP:的TemplateField>
            <&HeaderTemplate中GT;
                拒绝< BR />
                < ASP:复选框ID =checkboxall=服务器/>
                < ASP:DropDownList的ID =drpPaymentMethod_header=服务器>
                    < ASP:ListItem的值= - 1>请选择理由和LT; / ASP:ListItem的>
                    < ASP:ListItem的值=0>当月< / ASP:ListItem的>
                    < ASP:ListItem的值=1>对于结束< / ASP:ListItem的>
                    < ASP:ListItem的值=2>对于旅游与LT; / ASP:ListItem的>
                < / ASP:DropDownList的>
            < / HeaderTemplate中>
            <&ItemTemplate中GT;
                < ASP:复选框ID =checkbox1=服务器/>
                < ASP:DropDownList的ID =drpPaymentMethod的CssClass =gridDropDown=服务器>
                    < ASP:ListItem的值= - 1> ----< / ASP:ListItem的>
                    < ASP:ListItem的值=0>当月< / ASP:ListItem的>
                    < ASP:ListItem的值=1>对于结束< / ASP:ListItem的>
                    < ASP:ListItem的值=2>对于旅游与LT; / ASP:ListItem的>
                < / ASP:DropDownList的>
                &所述; asp的:的RequiredFieldValidator ID =RFV的CssClass =gridRfv与InitialValue = - 1的ControlToValidate =drpPaymentMethod
                    启用=假显示=静态=服务器的ErrorMessage =的RequiredFieldValidator>< / ASP:&的RequiredFieldValidator GT;
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < ASP:的TemplateField的HeaderText =值>
            <&ItemTemplate中GT;
                < ASP:文本框ID =txt_Value=服务器WIDTH =58px文本=0>< / ASP:文本框>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
    < /专栏>
< / ASP:GridView的>
< ASP:按钮的ID =Button1的=服务器文本=按钮/>

CS:

 保护无效gv_RowDataBound(对象发件人,GridViewRowEventArgs E)
    {
        如果(e.Row.RowType == DataControlRowType.DataRow)
        {
            复选框checkbox1 = e.Row.FindControl(checkbox1)的复选框;
            的RequiredFieldValidator RFV = e.Row.FindControl(RFV)作为的RequiredFieldValidator;
            DropDownList的drpPaymentMethod =(DropDownList的)e.Row.FindControl(drpPaymentMethod);
            //你可以通过本而不是myDiv.ClientID,并从DOM元素得到ID
            checkbox1.Attributes.Add(onclick事件,UpdateValidator('+ checkbox1.ClientID +,+ drpPaymentMethod.ClientID +,+ rfv.ClientID +'););
            如果(!checkbox1.Checked)
                drpPaymentMethod.Attributes.Add(禁用,已禁用);
        }        如果(e.Row.RowType == DataControlRowType.Header)
        {
            复选框checkboxall = e.Row.FindControl(checkboxall)的复选框;            checkboxall.Attributes.Add(的onclick,UpdateValidatorAll('+ checkboxall.ClientID +'););        }
    }

JavaScript的:

 <脚本SRC =脚本/ jQuery的-1.4.1.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本类型=文/ JavaScript的>
    功能UpdateValidator(chkID,drpID,validatorid){
        //使只有复选框被选中的验证
        VAR enableValidator = $(#+ chkID)。是(:检查);        如果(enableValidator)
            $('#'+ drpID).removeAttr('禁用');
        其他
            $('#'+ drpID).attr('残疾','禁用');        变种VV = $('#'+ validatorid).VAL();        ValidatorEnable(的document.getElementById(validatorid),enableValidator);
    }    功能UpdateValidatorAll(chkID){
        //使只有复选框被选中的验证
        !VAR enableValidator = $(#+ chkID)。是(:检查);        $('。gridDropDown')。每个(函数(指数){
            如果(enableValidator)
                $(本).removeAttr('禁用');
            其他
                $(本).attr('残疾','禁用');
        });        $('。gridRfv')。每个(函数(指数){
            VAR CONT = $(本)获得();
            ValidatorEnable(续[0],enableValidator);        });    }
< / SCRIPT>

Question:

I'm trying to validate the dropdownlist if the user checked the checkbox as you can see in the screen one.

Problem:

So, how can I validate the checkbox if the user have select all the checkboxes from header? as you can see the screen two. if I select all the checkboxes then i am looking to fireup the validate as shown in screen one.

output:

screen 1:

screen 2

//aspx

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
    OnRowDataBound="gv_RowDataBound">
    <Columns>
        <asp:BoundField DataField="ID" ControlStyle-Width="250px" HeaderText="ID" SortExpression="ID" />
        <asp:BoundField DataField="FirstName" ControlStyle-Width="250px" HeaderText="FirstName"
            SortExpression="FirstName" />
        <asp:BoundField DataField="LastName" ControlStyle-Width="250px" HeaderText="LastName"
            SortExpression="LastName" />
        <asp:TemplateField  HeaderText="Reject">
         <HeaderTemplate >
            Reject<br />
            <asp:CheckBox ID="checkboxall"  runat="server" />

              <asp:DropDownList ID="drpPaymentMethod_header" runat="server">
                    <asp:ListItem Value="-1">Please select reason</asp:ListItem>
                    <asp:ListItem Value="0">Month</asp:ListItem>
                    <asp:ListItem Value="1">At End</asp:ListItem>
                    <asp:ListItem Value="2">At Travel</asp:ListItem>
                </asp:DropDownList>

        </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox ID="checkbox1" CssClass="selectreject"  runat="server" />
                <asp:DropDownList ID="drpPaymentMethod" runat="server">
                    <asp:ListItem Value="-1">Please select reason</asp:ListItem>
                    <asp:ListItem Value="0">Month</asp:ListItem>
                    <asp:ListItem Value="1">At End</asp:ListItem>
                    <asp:ListItem Value="2">At Travel</asp:ListItem>
                </asp:DropDownList>
                <asp:RequiredFieldValidator ID="rfv" InitialValue="-1" ControlToValidate="drpPaymentMethod" ForeColor="Red" SetFocusOnError="true"
                    Enabled="false" Display="dynamic" runat="server" ErrorMessage="Please select reason"></asp:RequiredFieldValidator>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Value">
            <ItemTemplate>
                <asp:TextBox ID="txt_Value" runat="server" Width="58px" Text="0"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

//cs

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        { 
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                CheckBox checkbox1 = e.Row.FindControl("checkbox1") as CheckBox;
                RequiredFieldValidator rfv = e.Row.FindControl("rfv") as RequiredFieldValidator;
                DropDownList drpPaymentMethod = (DropDownList)e.Row.FindControl("drpPaymentMethod");
                // you can just pass "this" instead of "myDiv.ClientID" and get the ID from the DOM element
                checkbox1.Attributes.Add("onclick", "UpdateValidator('" + checkbox1.ClientID + "','" + drpPaymentMethod.ClientID + "','" + rfv.ClientID + "');");
                if (!checkbox1.Checked)
                    drpPaymentMethod.Attributes.Add("disabled", "disabled");
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                CheckBox checkboxall = e.Row.FindControl("checkboxall") as CheckBox;
                //how to get the reference here ( rfv ?????????)
                //checkboxall.Attributes.Add("onclick", "UpdateValidatorAll('" + checkboxall.ClientID + "','" + drpPaymentMethod.ClientID + "','" + rfv.ClientID + "');");

            } 
        }

//js

$(document).ready(function () {

            var checkbox1 = "#<%=gv.ClientID%> input[id*='checkbox1']:checkbox";
            var checkboxall = $("input[id$='checkboxall']");

            $(checkboxall).click(function () {  
                if (checkboxall.is(':checked')) {
                    $('.selectreject > input').attr("checked", checkboxall.attr("checked"));   
                }
                else {
                    $('.selectreject > input').attr("checked", false); 
                }

            });

        }); 

        function UpdateValidator(chkID, drpID, validatorid) {

            //enabling the validator only if the checkbox is checked
            var enableValidator = $("#" + chkID).is(":checked");

            if (enableValidator)
                $('#' + drpID).removeAttr('disabled');
            else
                $('#' + drpID).attr('disabled', 'disabled');

            var vv = $('#' + validatorid).val();
            ValidatorEnable(document.getElementById(validatorid), enableValidator);
        }

        function UpdateValidatorAll(....) // i havent write the code for this function (select All checkbox)

解决方案

try this: ASPX:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="Id"
    OnRowDataBound="gv_RowDataBound">
    <Columns>
        <asp:BoundField DataField="ID" ControlStyle-Width="250px" HeaderText="ID" SortExpression="ID" />
        <asp:BoundField DataField="FirstName" ControlStyle-Width="250px" HeaderText="FirstName"
            SortExpression="FirstName" />
        <asp:BoundField DataField="LastName" ControlStyle-Width="250px" HeaderText="LastName"
            SortExpression="LastName" />
        <asp:TemplateField>
            <HeaderTemplate>
                Reject<br />
                <asp:CheckBox ID="checkboxall" runat="server" />
                <asp:DropDownList ID="drpPaymentMethod_header" runat="server">
                    <asp:ListItem Value="-1">Please select reason</asp:ListItem>
                    <asp:ListItem Value="0">Month</asp:ListItem>
                    <asp:ListItem Value="1">At End</asp:ListItem>
                    <asp:ListItem Value="2">At Travel</asp:ListItem>
                </asp:DropDownList>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:CheckBox ID="checkbox1" runat="server" />
                <asp:DropDownList ID="drpPaymentMethod" CssClass="gridDropDown" runat="server">
                    <asp:ListItem Value="-1">----</asp:ListItem>
                    <asp:ListItem Value="0">Month</asp:ListItem>
                    <asp:ListItem Value="1">At End</asp:ListItem>
                    <asp:ListItem Value="2">At Travel</asp:ListItem>
                </asp:DropDownList>
                <asp:RequiredFieldValidator ID="rfv" CssClass="gridRfv" InitialValue="-1" ControlToValidate="drpPaymentMethod"
                    Enabled="false" Display="Static" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Value">
            <ItemTemplate>
                <asp:TextBox ID="txt_Value" runat="server" Width="58px" Text="0"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Button" />

CS:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox checkbox1 = e.Row.FindControl("checkbox1") as CheckBox;
            RequiredFieldValidator rfv = e.Row.FindControl("rfv") as RequiredFieldValidator;
            DropDownList drpPaymentMethod = (DropDownList)e.Row.FindControl("drpPaymentMethod");
            // you can just pass "this" instead of "myDiv.ClientID" and get the ID from the DOM element
            checkbox1.Attributes.Add("onclick", "UpdateValidator('" + checkbox1.ClientID + "','" + drpPaymentMethod.ClientID + "','" + rfv.ClientID + "');");
            if (!checkbox1.Checked)
                drpPaymentMethod.Attributes.Add("disabled", "disabled");
        }

        if (e.Row.RowType == DataControlRowType.Header)
        {
            CheckBox checkboxall = e.Row.FindControl("checkboxall") as CheckBox;

            checkboxall.Attributes.Add("onclick", "UpdateValidatorAll('" + checkboxall.ClientID + "');");

        }
    }

JavaScript:

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function UpdateValidator(chkID, drpID, validatorid) {
        //enabling the validator only if the checkbox is checked
        var enableValidator = $("#" + chkID).is(":checked");

        if (enableValidator)
            $('#' + drpID).removeAttr('disabled');
        else
            $('#' + drpID).attr('disabled', 'disabled');

        var vv = $('#' + validatorid).val();

        ValidatorEnable(document.getElementById(validatorid), enableValidator);
    }

    function UpdateValidatorAll(chkID) {
        //enabling the validator only if the checkbox is checked
        var enableValidator = !$("#" + chkID).is(":checked");

        $('.gridDropDown').each(function (index) {
            if (enableValidator)
                $(this).removeAttr('disabled');
            else
                $(this).attr('disabled', 'disabled');
        });

        $('.gridRfv').each(function (index) {
            var cont = $(this).get();
            ValidatorEnable(cont[0], enableValidator);

        });

    }
</script>

这篇关于复选框HeaderTemplate中验证ItemTemplate中的CheckBox的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆