2013-04-09 5 views
0

У меня есть три текстовых поля для asp net, которые будут содержать критерии поиска для поиска в таблице. Я бы хотел, чтобы поиск работал как Google. Когда клавиша ввода нажата, чтобы событие щелчка на кнопке «Ввод» загорелось. Событие клика никогда не срабатывает. Что я могу сделать, чтобы он загорелся?Как получить asp: Panel Default Button для запуска события нажатия кнопки?

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebCategoryGenerateEdit.ascx.cs" 
Inherits="EPPA.Controls.WebCategoryGenerateEdit" ClientIDMode="Static" %> 
<script src="/Scripts/jquery-1.8.3.js" type="text/javascript"></script> 
<script type="text/javascript"> 
// debugger; 
function pageLoad() { 
    var gvCategoryMessage = $("#<%=GVCategoryMessage.ClientID %>").html 

    if (gvCategoryMessage.length != 0) { 
     $("#<%=GVParentCategoryLinkTitle.ClientID %>").keydown(function() { 
      $("#<%=GVCategoryMessage.ClientID %>").html(""); 
     }) 
     $("#<%=GVCategoryLinkTitle.ClientID %>").keydown(function() { 
      $("#<%=GVCategoryMessage.ClientID %>").html(""); 
     }) 
    } 
} 
</script> 
<asp:ScriptManager runat="server" /> 
<asp:MultiView ID="Multiview1" runat="server" ActiveViewIndex="0"> 
<asp:View ID="SearchView" runat="server"> 
     <asp:Table ID="TableSV1" runat="server"> 
      <asp:TableRow ID="TableRowSV1" runat="server"> 
       <asp:TableCell ID="TableCellSV1" runat="server"> 
        <asp:Label ID="LabelSV1" runat="server" SkinID="SearchTextLabel" 
Text="CB or CJ" CssClass="searchTextLabel_Division"/> 
       </asp:TableCell> 
       <asp:TableCell ID="TableCellSV2" runat="server"> 
        &nbsp;<asp:Label ID="LabelSV2" runat="server" 
SkinID="SearchTextLabel" Text="Parent Category Link Title" 
CssClass="searchTextLabel_ParentCategoryLink" /> 
       </asp:TableCell> 
       <asp:TableCell ID="TableCellSV3" runat="server"> 
        &nbsp;<asp:Label ID="LabelSV3" runat="server" 
SkinID="SearchTextLabel" 
Text="Category Link Title" CssClass="searchTextLabel_CategoryLink" /> 
       </asp:TableCell> 
       <asp:TableCell ID="TableCellSV4" runat="server"> 
        &nbsp;<asp:Label ID="Label1" runat="server" 
SkinID="SearchTextLabel" 
Text="Category ID" CssClass="searchTextLabel_CategoryID" /> 
       </asp:TableCell> 
      </asp:TableRow> 
      <asp:TableRow ID="SVTableRowSV2" runat="server"> 
       <asp:TableCell ID="TableCellSV5" runat="server"> 
        <asp:DropDownList ID="SVDivisionDDL" runat="server" 
OnSelectedIndexChanged="SVDivisionDDL_SelectedIndexChanged" AutoPostBack="true" > 
         <asp:ListItem Value="CB">CB</asp:ListItem> 
         <asp:ListItem Value="CJ">CJ</asp:ListItem> 
        </asp:DropDownList> 
        &nbsp; 
       </asp:TableCell>    
       <asp:TableCell ID="TableCellSV6" runat="server" > 
        <asp:panel ID="SVPCLTContainer" runat="server" 
        DefaultButton="SV6EnterButton">      
         <asp:TextBox ID="SVParentCategoryLinkTitle" runat="server" 
         SkinID="SearchTextBox" 
         CssClass="searchTextBox_ParentCategoryLink" /> 
         <asp:Button ID="SV6EnterButton" runat="server" Visible="false" 
         Text="Enter" OnClick="EnterKeyPressed_Click" /> 
        </asp:panel> 
        &nbsp; 
       </asp:TableCell>    
       <asp:TableCell ID="TableCellSV7" runat="server" > 
        <asp:TextBox ID="SVCategoryLinkTitle" 
         runat="server" SkinID="SearchTextBox" 
          CssClass="searchTextBox_CategoryLink" /> 
        &nbsp; 
       </asp:TableCell>    
       <asp:TableCell ID="TableCellSV8" runat="server" > 
        <asp:TextBox ID="SVCategoryID" runat="server" 
         SkinID="SearchTextBox" 
         CssClass="searchTextBox_CategoryID" /> 
        &nbsp; 
       </asp:TableCell> 
      </asp:TableRow> 
     </asp:Table> 
    <asp:Button ID="SVGenNewButton" runat="server" Text="Generate New Category ID" 
OnClick="SVGenerateNewButton_Click" /> 
    &nbsp; 
    <asp:Button ID="SVDeleteButton" runat="server" Text="Delete Checked items" 
OnClick="SVDeleteButton_Click" /> 
    <div style="width:618px; overflow-x:no-display; overflow-y:auto; max-height:392px; 
padding-top:2px; "> 
     <asp:GridView ID="gvWebCategoryID" runat="server" AutoGenerateColumns="False" 
SkinID="gridViewSkin" OnRowDeleting="gvWebCategoryID_RowDeleting" > 
      <Columns> 
       <asp:TemplateField HeaderText="Edit"> 
        <ItemTemplate> 
         <asp:Button ID="SVgridViewEditButton" runat="server" 
OnClick="gvWeCategoryIDEditButton_Click" Text="Edit" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Delete"> 
        <ItemTemplate> 
         <asp:CheckBox ID="Checkbox1" runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Division" HeaderText="CB or CJ" 
       Visible="true" /> 
       <asp:BoundField DataField="ParentCategoryLinkTitle" HeaderText="Parent 
       Category Link Title" /> 
       <asp:BoundField DataField="CategoryLinkTitle" HeaderText="Category 
        Link Title" /> 
       <asp:BoundField DataField="CategoryID" HeaderText="Category ID" /> 
       <asp:TemplateField HeaderText="Error Message" Visible="false" > 
        <ItemTemplate> 
         <asp:Label ID="ErrorMessage" runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
    </div> 
</asp:View> 

</asp:MultiView>   

и здесь метод позади код:

protected void EnterKeyPressed_Click(object sender, EventArgs e) 
    { 
     ReloadData(); 
     this.Multiview1.ActiveViewIndex = 0; 
    } 
+0

Когда я установил «возвращает истину;» Событие click для первой кнопки вне панели (SVGenNewButton) запускается. – Tom3609

ответ

0

проверить этот вопрос и ответ, если это поможет: Default button not working in asp.net panel

DefaultButton используется, чтобы захватить нажатие клавиши, если Enter фокус уже находится внутри панели, например, вы должны перенести фокус на поле ввода, например текстовые поля внутри панели. если фокус не там, он не будет работать.

+0

Чтобы проверить это, введите значение в текстовое поле «SVParentCategoryLinkTitle». Когда я нажимаю клавишу ввода, событие нажатия кнопки «EnterKeyPressed» по-прежнему не срабатывает. – Tom3609

+0

Я пошел по ссылке, которую вы включили. В своем примере они говорят, что вам нужен элемент управления, отличный от кнопки. У меня есть панель управления asp: textbox внутри панели. Я хотел бы, чтобы пользователь мог ввести текст в текстовое поле asp: и нажать клавишу ввода, чтобы запустить скрытое событие нажатия кнопки. – Tom3609

+0

Я изменил исходный код, который был показан выше. Я окружил кнопку asp: textbox и asp: с панелью asp:. Панель asp: имеет кнопку по умолчанию «SV6EnterButton» (кнопка внутри панели). – Tom3609

1

На первый взгляд, вы пробовали удаление возвращение ложным здесь:

$("#<%=SVParentCategoryLinkTitle.ClientID %>").keydown(function (e) { 
    if (e.which == 13) { 
     __doPostBack("#<%=EnterKeyPressed.UniqueID %>", ""); 
     return false; 
    } 
})