我在InsertItemTemplate中添加了一个RequiredFieldValidator,它似乎工作正常。但是,我遇到的问题是,现在我无法在ListView中执行任何其他操作(如编辑或删除项目),除非必需字段具有值。有什么方法可以在用户单击InsertItemTemplate上的“插入”按钮时手动执行验证,或者我可以执行的其他一些小技巧,这样用户就不必首先键入值只是为了删除其他内容清单?
由于
答案 0 :(得分:4)
A_Nablsi,
请提供解决方案的代码,以便在编辑/更新模式下关闭“插入新的验证”控件,或者在“编辑”和“插入行”同时处于活动状态时关闭“编辑/更新”验证控件。使用您的名义解决方案的此代码失败,并且对updateButton的null引用。
LinkButton updateButton = LVTasks.EditItem.FindControl("UpdateButtonTask") as LinkButton;
updateButton.CausesValidation = false;
有效的解决方案正在添加验证组。
在EditItemTemplate和Update按钮中包含ValidationGroup =“myVGEdit”和Validator Control。
在InsertItemTemplate和Insert按钮中包含ValidationGroup =“myVGInsert”和Validator Control。
<asp:ListView ID="LVTasks" runat="server"
DataKeyNames="IDTask"
DataSourceID="LDS_LVTasks"
InsertItemPosition="FirstItem"
oniteminserting="LVTasks_ItemInserting"
onitemupdating="LVTasks_ItemUpdating"
onitemcommand="LVTasks_ItemCommand"
>
<EditItemTemplate>
<asp:TextBox ID="TaskUpdateTextBox" runat="server"
Text='<%# Bind("Task") %>'
TextMode="MultiLine" Rows="1" Font-Bold="true" Width="300px"
/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="Please Set Task title"
ControlToValidate="TaskUpdateTextBox"
ValidationGroup="myVGUpdate"
/>
<asp:LinkButton ID="UpdateCancelButton" runat="server"
CommandArgument='<%#Eval("IDTask") %>'
CommandName="Cancel"
CausesValidation="False"
ToolTip="Cancel - Abort - No Changes"><div class="Cancel"></div></asp:LinkButton>
<asp:LinkButton ID="UpdateButtonTask" runat="server"
CommandArgument='<%#Eval("IDTask") %>'
CommandName="Update"
CausesValidation="True"
ValidationGroup="myVGEdit"
ToolTip="Save Changes - Update"><div class="Update" ></div></asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TaskInsertTextBox" runat="server" Text='<%# Bind("Task") %>'
TextMode="MultiLine" Rows="1" Font-Bold="true" Width="300px"
/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="Please Set Task title"
ControlToValidate="TaskInsertTextBox"
ValidationGroup="myVGInsert"
/>
<asp:LinkButton ID="CancelButton" runat="server"
CommandArgument='<%#Eval("IDTask") %>'
CommandName="Cancel"
CausesValidation="False"><div class="Clear" ></div></asp:LinkButton>
<asp:LinkButton ID="InsertButtonTask" runat="server"
CommandArgument='<%#Eval("IDTask") %>'
CommandName="Insert"
CausesValidation="true"
ValidationGroup="myVGInsert"
><div class="Insert" ></div></asp:LinkButton>
</InsertItemTemplate>
答案 1 :(得分:3)
是, 在您不希望它们触发验证的控件上将CausesValidation属性设置为false。