做了一个用户控件,由一个TextBox、若干验证控件组成和若干属性构成。在使用页面,通过用户控件的属性确定哪个验证控件有效。测试证明该控件在普遍的WebForm中可以预期发挥正常作用。但今天发现嵌套DetailsView模板中,也可以提示验证失败(比如设置用户控件的属性之一IsRequired为True,当焦点离开没有任何内容的TextBox时提示“输入内容”),问题是,若此时按下DetailsView模板中的Update或Insert按钮时,相应的事件仍会执行,因为数据表的部分字段不接受Null,所以程序会报错。Update或Insert按钮的ValidationGroup与用户控件的ValidationGroup一致。另外,Update或Insert的默认OnCommand已去掉,添加OnClick属性,并单独写了相应的过程。是否问题与此有关?谢谢!
<EditItemTemplate>
<uc1:ValidInput ID="txtDescription" runat ="server" Text='<%# Bind("Description") %>' ExpressionOptions ="通用" Width ="500" TextMode="MultiLine" Height ="100" Required ="true" IsEnableViewState ="true" MaxLength ="500" ValidationGroup="AddEditProductCls" />
</EditItemTemplate>
<InsertItemTemplate>
<uc1:ValidInput ID="txtDescription" runat ="server" Text='<%# Bind("Description") %>' ExpressionOptions ="通用" Width ="500" TextMode="MultiLine" Height ="100" Required ="true" IsEnableViewState ="true" MaxLength ="500" ValidationGroup="AddEditProductCls" />
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDescription" runat="server" Text='<%# Bind("Description") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="英文简介" SortExpression="EnDescription">
<EditItemTemplate>
<uc1:ValidInput ID="txtEnDescription" runat ="server" Text='<%# Bind("EnDescription") %>' ExpressionOptions ="英文加标点" Width ="500" TextMode="MultiLine" Height ="100" Required ="true" IsEnableViewState ="true" MaxLength ="500" ValidationGroup="AddEditProductCls" />
</EditItemTemplate>
<InsertItemTemplate>
<uc1:ValidInput ID="txtEnDescription" runat ="server" Text='<%# Bind("EnDescription") %>' ExpressionOptions ="英文加标点" Width ="500" TextMode="MultiLine" Height ="100" Required ="true" IsEnableViewState ="true" MaxLength ="500" ValidationGroup="AddEditProductCls" />
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="lblEnDescription" runat="server" Text='<%# Bind("EnDescription") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>