下面是我的頁面的輸出運行下面的代碼後:如何控制ASP.NET驗證程序控件客戶端驗證
我用在我的處境ValidatorEnable
客戶端驗證(如果你知道如何更好的方法做到這一點,讓我知道)
我的問題是:
IHAVE使用複選框一個GridView和一個下拉列表彼此相鄰如圖所示的屏幕截圖。
因此,如果用戶選中了複選框,它將啓用下拉列表以供選擇。 如果用戶點擊提交按鈕,它會驗證並要求用戶從下拉列表中選擇任何選項。
問題:
但問題是:它驗證了所有行,而不是一個我點擊。
我該如何強制驗證用戶在複選框中選中的特定行?
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" OnRowDataBound="gv_RowDataBound"
EnableModelValidation="True">
<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>
<ItemTemplate>
<asp:CheckBox ID="checkbox1" runat="server" />
<asp:DropDownList ID="ddl_PaymentMethod" 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="requiredDDL" runat="server" ControlToValidate="ddl_PaymentMethod"
ErrorMessage="Please select" InitialValue="-1" Display="Dynamic"></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>
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox checkbox1 = (CheckBox)e.Row.FindControl("checkbox1");
DropDownList ddl_PaymentMethod = (DropDownList)e.Row.FindControl("ddl_PaymentMethod");
ddl_PaymentMethod.Attributes.Add("disabled", "disabled");
checkbox1.Attributes.Add("onclick", "javascript:EnableCheckBox('" + ddl_PaymentMethod.ClientID + "','" + checkbox1.ClientID + "')");
}
}
function EnableCheckBox(ddl, chk) {
var ddl_PaymentMethod = document.getElementById(ddl);
var _chkbox = document.getElementById(chk);
if (_chkbox.checked) {
ddl_PaymentMethod.disabled = false;
validateCheckBox(ddl_PaymentMethod, true);
}
else {
ddl_PaymentMethod.disabled = true;
validateCheckBox(ddl_PaymentMethod, false);
}
}
function validateCheckBox(ddl, state) {
ValidatorEnable(document.getElementById(ddl.id, state));
}
請看到這個帖子非常類似的問題希望它能幫助 http://stackoverflow.com/questions/10432090/conditional-requiredfieldvalidator-inside-of-a-repeater/10432932#10432932 –
請看到這個帖子非常類似的問題希望幫助 http://stackoverflow.com/questions/10432090/conditional-requiredfieldvalidator-inside-of-a-repeater/10432932#10432932 –
感謝您的鏈接,但代碼不完整,仍然coulnd不abel想通了 –