0
我有一個程序,動態創建各種文本框/下拉列表。我試圖弄清楚如何只在更改時驗證這些字段。基本上,如果有人在文本框中輸入日期,那麼我需要程序驗證下拉列表是否已更改,反之亦然。如果兩個字段都沒有更改,則不應驗證。任何幫助將不勝感激。下面是代碼:驗證動態創建的字段,當一個被更改
<asp:TemplateField HeaderText="ValidatedDate" SortExpression="ValidatedDate">
<EditItemTemplate>
<asp:TextBox ID="txtValDate" Width="100px" MaxLength="10" runat="server" AutoPostBack="true"
Text='<%# Bind("ValidatedDate","{0:MM/dd/yyyy}") %>'></asp:TextBox>
<asp:RegularExpressionValidator ValidationGroup="g1" ID="RegularExpressionValidator10"
runat="server" ControlToValidate="txtValDate" Display="None" ErrorMessage="Validated Date: ##/##/####"
ValidationExpression="\d{1,2}/\d{1,2}/\d{4}"></asp:RegularExpressionValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblValidatedDate" runat="server" Text='<%# Bind("ValidatedDate","{0:MM/dd/yyyy}")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ProductStatus" SortExpression="ProductStatusDescription">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource6" AutoPostBack="true"
DataTextField="StatusDescription" DataValueField="StatusID" SelectedValue='<%# Bind("Status") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblProductStatus" runat="server" Text='<%# Bind("ProductStatusDescription")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我的道歉,該代碼可以是一個有點混亂,沒有正確的上下文。
您是否在代碼隱藏中生成了一些代碼?因爲這看起來像* .ascx片段。如果您在代碼隱藏中添加控件,1)請向我們展示代碼。 2)一定要在'Page_Init()'而不是'Page_OnLoad()'中執行,否則事件不會被綁定。 – 2013-08-28 20:44:41
這裏有代碼隱藏,但是它處理這個信息被放入的gridview(分頁/排序)。這是來自* aspx頁面。我會展示更多代碼,但隨後它會變成敏感內容。我只是在我的智慧結束這一點。除了這一件事以外,一切都很完美。 – Chris
事件是否在動態控件上觸發:從不?只有當直接修改?不被解僱,因爲你沒有附加事件給他們?如果「從不」,請參閱我原來的評論,確保你不會改變頁面結構比你應該... PS - 如果值得被「敏感」,應該值得寫一個簡單的自包含的例子從頭到尾都會出現問題。 – 2013-08-28 20:56:00