2012-08-27 77 views
1

我有一個ASP.NET頁面,在列表視圖中有一些下拉列表。表單底部是一個提交按鈕。ASP.NET - 窗體上只有下拉和按鈕的默認按鈕

每當用戶點擊「Enter」鍵時,我想按下提交按鈕。我使用面板的DefaultButton屬性在其他窗體上完成了這項工作,但在面板中有一個文本框和一個按鈕。

defaultbutton屬性在這裏沒有觸發提交按鈕,我認爲是因爲焦點不在面板中。

但是,如果我讓面板包含所有的元素,這似乎也不工作。我認爲這是因爲html表格佈局元素。

那麼當用戶在鍵盤上按下「Enter」鍵時,簡單的按下提交按鈕的答案是什麼?

<table cellpadding="3" cellspacing="1" border="0" width="100%"> 
    <tr> 
     <td align="center" width="100%" class="tableCaptionLabel" colspan="2"> 
     Asset Search by Photo 
     </td> 
    </tr> 
    <tr valign="top"> 
     <td colspan="2"> 



     <asp:ListView ID="lvQuery" runat="server" > 
      <LayoutTemplate> 
      <asp:Placeholder 
      id="groupPlaceholder" 
      runat="server" /> 
      </LayoutTemplate> 
      <GroupTemplate> 
      <div> 
      <asp:Placeholder 
      id="itemPlaceholder" 
      runat="server" /> 
      </div> 
      </GroupTemplate> 
      <ItemTemplate> 
      <asp:DropDownList ID="tagname" runat="server" DataSourceID="sqldsTagList" SelectedValue='<%# Bind("Tagname") %>' 
        DataTextField="TagDesc" DataValueField="TagDesc" AppendDataBoundItems ="true" AutoPostBack="true" OnSelectedIndexChanged="lstTagname_SelectedIndexChanged"> 
        <asp:ListItem Text="All" Value="All" /> 
      </asp:DropDownList> 

       <asp:DropDownList ID="Operation" runat="server" SelectedValue='<%# Bind("Operation") %>' AutoPostBack="true" OnSelectedIndexChanged="lstOperation_SelectedIndexChanged"> 
        <asp:ListItem Text="Equals" Value="Equals" Selected="True"/> 
        <asp:ListItem Text="Like" Value="Like" /> 
       </asp:DropDownList> 

      <asp:TextBox ID="TagValue" runat="server" Text='<%# Bind("TagValue") %>' Width="75%"></asp:TextBox> 

      <asp:DropDownList ID="ddlAlphabet" runat="server" Visible="false" AutoPostBack="true" OnSelectedIndexChanged="lstAlphabet_SelectedIndexChanged"> 
       <asp:ListItem Text="A" Value="A" Selected="True"/> 
       <asp:ListItem Text="B" Value="B" /> 
       <asp:ListItem Text="C" Value="C" /> 
       <asp:ListItem Text="D" Value="D" /> 
       <asp:ListItem Text="E" Value="E" /> 
       <asp:ListItem Text="F" Value="F" /> 
       <asp:ListItem Text="G" Value="G" /> 
       <asp:ListItem Text="H" Value="H" /> 
       <asp:ListItem Text="I" Value="I" /> 
       <asp:ListItem Text="J" Value="J" /> 
       <asp:ListItem Text="K" Value="K" /> 
       <asp:ListItem Text="L" Value="L" /> 
       <asp:ListItem Text="M" Value="M" /> 
       <asp:ListItem Text="N" Value="N" /> 
       <asp:ListItem Text="O" Value="O" /> 
       <asp:ListItem Text="P" Value="P" /> 
       <asp:ListItem Text="Q" Value="Q" /> 
       <asp:ListItem Text="R" Value="R" /> 
       <asp:ListItem Text="S" Value="S" /> 
       <asp:ListItem Text="T" Value="T" /> 
       <asp:ListItem Text="U" Value="U" /> 
       <asp:ListItem Text="V" Value="V" /> 
       <asp:ListItem Text="W" Value="W" /> 
       <asp:ListItem Text="X" Value="X" /> 
       <asp:ListItem Text="Y" Value="Y" /> 
       <asp:ListItem Text="Z" Value="Z" /> 
       <asp:ListItem Text="0" Value="0" /> 
       <asp:ListItem Text="1" Value="1" /> 
       <asp:ListItem Text="2" Value="2" /> 
       <asp:ListItem Text="3" Value="3" /> 
       <asp:ListItem Text="4" Value="4" /> 
       <asp:ListItem Text="5" Value="5" /> 
       <asp:ListItem Text="6" Value="6" /> 
       <asp:ListItem Text="7" Value="7" /> 
       <asp:ListItem Text="8" Value="8" /> 
       <asp:ListItem Text="9" Value="9" /> 
      </asp:DropDownList> 
      </ItemTemplate> 
      <EmptyItemTemplate>   

      </EmptyItemTemplate> 
     </asp:ListView> 


     </td> 
    </tr> 
    <tr> 
     <td> 
     <asp:Panel runat="server" ID="pnlEnter" DefaultButton="btnQuery" > 
     <asp:Button ID="btnQuery" runat="server" Text="Submit" /> 
     </asp:Panel> 
     </td> 
     <td align="right"> 
     <asp:Button ID="btnAddRow" runat="server" Text="Add Row" /> 
     </td> 
    </tr> 
</table> 
+0

我會建議使用jQuery或類似的處理按鍵的東西: http://api.jquery.com/keypress/ – CodingGorilla

回答

2

坐落在表單標籤,而不是面板DefaultButton屬性,並且還的UseSubmitBehavior="true"在你的ASP屬性:按鈕。

希望它能解決您的問題。

+0

表單標籤通常在主頁面中,當他在其他頁面上做同樣的事情時,它會給他帶來問題。 –

+0

可以在頁面init上運行時設置此屬性,即Page.Form.DefaultButton =「buttonID」; –

+0

現在,這是他可能感興趣的 –

0

您需要在列表視圖上方創建面板;

<asp:Panel runat="server" ID="pnlEnter" DefaultButton="btnQuery"> // panel should be at top of listview 
     <asp:ListView ID="lvQuery" runat="server" > 
      ....... 
      ........ 
     </aspListView> 
     <asp:Button ID="btnQuery" runat="server" Text="Submit" />   
</asp:Panel> 
+0

這沒有奏效。 – user1247395

0

另一種方法是寫一段JavaScript代碼的檢測「 輸入」按鈕,然後提交表單:

function yourKeyPressFunction(e) { 
     if (e.keyCode == 13) { 
      this.form.submit(); 
     } 
    } 

    <form method="post" onkeypress="yourKeyPressFunction(event)"> 
+0

我沒有表格標籤。我將如何在代碼隱藏中使用它? – user1247395

+0

它必須在aspx頁面上。面板和/或桌子可能有onkeypress事件。我不確定那 – MikeTWebb

+0

我正在使用母版頁。表單標籤在那裏。我只需要在我的幾個頁面上執行此操作。 – user1247395