2009-02-17 21 views
0

我正在Asp.Net 1.1中開發一個網頁,並且有一個允許用戶添加,編輯和刪除數據庫記錄的DataGrid。頁腳行包含允許添加新記錄的文本框。如何控制在DataGrid中使用哪些驗證器

對於我定義<的ItemTemplate >,< EditItemTemplate中>和<FooterItemTemplate>元件的每一列。我的aspx標記中的FooterItemTemplate和EditItemTemplate元素都包含RequiredFieldValidator控件以及文本框。 (見下文)

<asp:TemplateColumn HeaderText="Offer Code"> 
    <ItemTemplate> 
    <%# DataBinder.Eval(Container, "DataItem.OfferCode") %> 
    </ItemTemplate> 
    <FooterTemplate> 
    <asp:TextBox ID="txtNewOfferCode" Runat="server" /> 
<asp:RequiredFieldValidator ID="reqNewOfferCode" ControlToValidate="txtNewOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" /> 
    </FooterTemplate> 
    <EditItemTemplate> 
<asp:TextBox id=txtOfferCode Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.OfferCode") %>' /> 
<asp:RequiredFieldValidator ID="reqOfferCode" ControlToValidate="txtOfferCode" Display="None" ErrorMessage="Please specify 'Offer Code'" Runat="server" /> 
    </EditItemTemplate> 
</asp:TemplateColumn> 

我的問題是,當你嘗試編輯現有記錄,頁腳行中的空白字段防止驗證,因此回發和選定行的更新。

回答

2

通常情況下,GridView無法插入新行。你做了竅門,使用了頁腳行。當然,當你提交你的GridView時,驗證器會阻止這個過程,因爲這個字段是空的。當您的GridView進入編輯模式並禁用頁腳的驗證器時,您應該捕獲事件。不要忘記在離開GridView編輯模式時啓用它們。

+0

那麼您如何訪問驗證器呢?我沒有編程訪問它們。我可以通過Edit事件的參數訪問EditItemTemplate的驗證器,但我看不到如何獲得FooterItemTemplate驗證器。 – 2009-02-17 15:51:35

相關問題