2013-11-25 82 views
2

我有一個gridView如下。如何啓用禁用基於頁面控件的驗證器?

<asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId"> 
    <Columns> 
     <asp:BoundField HeaderText="Location Name" DataField="LocationName" /> 
     <asp:TemplateField HeaderText="Amount"> 
      <ItemTemplate> 
       <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" Visible="true"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ControlToValidate="txtAmount" ErrorMessage="Please enter the Amount" Display="Dynamic" SetFocusOnError="true"></asp:RequiredFieldValidator> 
       <asp:RegularExpressionValidator ID="rgvAmount" runat="server" ControlToValidate="txtAmount" ValidationExpression="^\d+$" ErrorMessage="Please enter whole numbers only" Display="Dynamic" SetFocusOnError="true"></asp:RegularExpressionValidator> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

和一個保存按鈕,下面的代碼。

<asp:Button ID="btnLocationAmountList" runat="server" OnClick="btnLocationAmountList_Click" Text="Save" Width ="100px" /> 

在gridview被綁定後,其中有大約20行。 當我在第一行的文本框中輸入數字,然後按Enter鍵轉到第二個文本框時,將爲所有其他19行觸發必填字段驗證程序

但是,如果我在第一個文本框中鍵入數字,然後用鼠標單擊下一個文本框,則不會觸發RequiredFieldValidator。

只有單擊保存按鈕,才能驗證該頁面。保存前必須爲所有文本框輸入值,並且所有值必須僅爲整數。 (11,125,6589等)。 如何啓用特定控件的禁用驗證器?

更新:這裏是我的類文件中的page_load事件代碼。

 protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       BindGrid(); 
      } 
     } 


     protected void BindGrid() 
     { 
      FinanceServiceRef.FinanceServiceClient obj = new FinanceServiceRef.FinanceServiceClient("WSHttpBinding_IFinanceService"); 
      var ds = obj.ViewLocationAmountCashManagement(); 
      grvLocationCash.DataSource = ds; 
      grvLocationCash.DataBind(); 
     } 
+1

_「按Enter鍵進入第二個文本框」_'Webforms!= winforms'。如果按回車則默認提交頁面。 –

+0

恐怕不是@TimSchmelter。如果它是回發問題,我的page_load函數也不會被命中。 – Mahe

+0

請參閱我的更新後的問題@TimSchmelter – Mahe

回答

1

您需要處理在每個文本框中的onkeydown在每個ItemTemplate,就像這樣:

的onkeydown = 「返回(event.keyCode = 13!)」

<asp:TemplateField HeaderText="Amount"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" 
        Visible="true" 
        onkeydown = "return (event.keyCode != 13);"> 
     </asp:TextBox> 
    </ItemTemplate> 
</asp:TemplateField> 

注:輸入鍵有13

+0

驗證器事件未觸發。但是它也沒有進入下一個文本框。有什麼辦法可以轉到下一個文本框? – Mahe

+0

@Mahe - 請參閱[自動將光標從一個文本框移動到另一個]的接受答案(http://stackoverflow.com/questions/17522431/automatically-move-cursor-from-one-textbox-to-another)。 –

0

一個keyCode值你嘗試使用驗證組的財產?

<asp:GridView ID="grvLocationCash" runat="server" AutoGenerateColumns="false" CssClass="gridtable" DataKeyNames="LocationId"> 
    <Columns> 
     <asp:BoundField HeaderText="Location Name" DataField="LocationName" /> 
     <asp:TemplateField HeaderText="Amount"> 
      <ItemTemplate> 
       <asp:TextBox ID="txtAmount" runat="server" CssClass="txtbox" Visible="true"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ControlToValidate="txtAmount" ErrorMessage="Please enter the Amount" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RequiredFieldValidator> 
       <asp:RegularExpressionValidator ID="rgvAmount" runat="server" ControlToValidate="txtAmount" ValidationExpression="^\d+$" ErrorMessage="Please enter whole numbers only" Display="Dynamic" SetFocusOnError="true" ValidationGroup="save"></asp:RegularExpressionValidator> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 


<asp:Button ID="btnLocationAmountList" runat="server" OnClick="btnLocationAmountList_Click" Text="Save" Width ="100px" ValidationGroup="save" /> 
+0

它不起作用。擊中輸入在第一個文本框本身觸發頁面提交,我不想發生。我需要回車鍵才能執行類似的製表鍵功能(切換到下一個文本框)。 – Mahe

+0

爲什麼你按下enter鍵移動到下一個文本框,你需要改變使用jquery輸入按鍵的功能。 –

相關問題