我在RadGrid中有一个复选框,下拉列表和必填字段验证器。我想在选中复选框时启用禁用所需的归档验证器。现在,下面的Java脚本代码确实在编辑模式下启用和禁用了所需的归档验证器。
但是当我单击rad grid编辑模式更新按钮时(未选中复选框并且下拉框选中的值也为空(“”)它等待很少(可能正在回发)并再次触发所需的字段验证器。
任何想法为什么它表现得那样。帮助欣赏。
我从下面的链接获得了控制访问部分。 Accessing Telerik RadGrid edit mode from javascript
我的Rad网格标记:
<EditItemTemplate>
<asp:CheckBox ID="chkConfigurable" runat="server" Checked='<%# Bind("Configurable") %>'
</EditItemTemplate>
这是我的java脚本代码:
//依赖于复选框选择
,可以选择或禁用所需的字段验证器 function EnableDisbaleConfigRfv(chkbx) {
var grid = $find("<%=rgItems.ClientID %>");
var masterTable = grid.get_masterTableView();
// get the required field validator id from grid
var rfv = $telerik.$(masterTable.get_element()).find('[id*="rfvddlConfigTeam"]')[0];
// enable disable validator
if (chkbx) {
ValidatorEnable(rfv, true);
ValidatorUpdateDisplay(rfv); // this one added after reading some posts but no luck.
} else {
ValidatorEnable(rfv, false);
}
}
答案 0 :(得分:1)
请尝试使用以下代码段。
<强> JS 强>
function ValidateValidation(cmb, chk, lbl) {
cmb = $find(cmb);
chk = document.getElementById(chk);
lbl = document.getElementById(lbl);
if (chk.checked) {
if (cmb.get_value() != null && cmb.get_value() != "" && cmb.get_selectedIndex() >= 0) {
debugger;
return true;
}
else {
lbl.style.display = '';
return false;
}
}
else {
lbl.style.display = 'none';
return true;
}
}
<强> ASPX 强>
<telerik:GridTemplateColumn>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
<telerik:RadComboBox ID="RadComboBox1" runat="server">
<Items>
</Items>
</telerik:RadComboBox>
<asp:Label ID="Label1" runat="server" ForeColor="Red" Text="your messege" Style="display: none;"></asp:Label>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<强> aspx.cs 强>
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = e.Item as GridEditableItem;
CheckBox CheckBox1 = item.FindControl("CheckBox1") as CheckBox;
Label Label1 = item.FindControl("Label1") as Label;
RadComboBox RadComboBox1 = item.FindControl("RadComboBox1") as RadComboBox;
(item.FindControl("UpdateButton") as LinkButton).Attributes.Add("onclick", "return ValidateValidation('" + RadComboBox1.ClientID + "','" + CheckBox1.ClientID + "','" + Label1.ClientID + "');");
}
}