复选框HeaderTemplate中验证ItemTemplate中的CheckBox [英] CheckBox in HeaderTemplate validates ItemTemplate CheckBox
本文介绍了复选框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屋!
查看全文