验证ListView插入/编辑模板中的控件

时间:2010-10-29 16:08:45

标签: asp.net validation listview

我在InsertItemTemplate中添加了一个RequiredFieldValidator,它似乎工作正常。但是,我遇到的问题是,现在我无法在ListView中执行任何其他操作(如编辑或删除项目),除非必需字段具有值。有什么方法可以在用户单击InsertItemTemplate上的“插入”按钮时手动执行验证,或者我可以执行的其他一些小技巧,这样用户就不必首先键入值只是为了删除其他内容清单?

由于

2 个答案:

答案 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。