2015-04-16 30 views
0

我想單擊gridview編輯記錄。我的gridview放置在更新面板內。 有一個給定的搜索文本框,當我在搜索文本框中鍵入任何內容時,會觸發「txt_Search_TextChanged」事件並在數據庫中搜索文本,並且該特定記錄被提取並綁定到網格。gridview編輯模式沒有被單擊發射

現在我的問題是:如果我點擊編輯按鈕的網格沒有搜索,然後事件被解僱。但如果我搜索任何記錄,然後點擊編輯按鈕,則需要2次點擊才能顯示結果。我已經寫了文本框一個腳本如下:

enter code here 
       <script> 
      function RefreshUpdatePanel() { 
      __doPostBack('<%= txt_Search.ClientID %>', ''); 

    }; 

下面

是ASPX代碼

<table width="100%"> 
    <tr> 
     <td align="center"> 
      <div style="border-width: 2px; border-style: solid; border-color: #FDAC4C; width: 95%; border-radius: 10px;"> 
       <asp:UpdatePanel ID="UpdatePanel3" runat="server"> 
        <ContentTemplate> 
         <asp:GridView ID="grd_Master" ShowFooter="false" runat="server" Width="98%" AllowPaging="true" PagerStyle-CssClass="paging" 
          OnPageIndexChanging="grd_Master_PageIndexChanging" 
          PageSize="8" AutoGenerateColumns="False" BorderWidth="0" BorderStyle="Solid" BorderColor="#FDAC4C" OnRowEditing="grd_Master_RowEditing" ShowHeaderWhenEmpty="true"> 
          <AlternatingRowStyle BackColor="#FFFFFF" Height="30px" BorderStyle="Dotted" BorderWidth="1" 
           BorderColor="#DDDDDD" /> 
          <RowStyle BackColor="#FFF0DD" Height="30px" BorderStyle="Dotted" BorderWidth="1" 
           BorderColor="#DDDDDD" /> 

          <Columns> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             Serial No.<br /> 

            </HeaderTemplate> 
            <HeaderStyle HorizontalAlign="Left"></HeaderStyle> 
            <ItemStyle HorizontalAlign="Right" Width="10%" CssClass="grdrow"></ItemStyle> 
            <ItemTemplate> 
             <asp:Label ID="lblSRNO" runat="server" Style="padding-right: 50px" Text='<%#Container.DataItemIndex+1 %>'></asp:Label> 
             <asp:Label ID="Cooling_Code" runat="server" Visible="false" Text='<% #Bind("Cool_Code")%>'></asp:Label> 
             <asp:Label ID="lblProdGrpCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Prod_Grp_Code")%>' Visible="false"></asp:Label> 
             <asp:Label ID="lblSubProdGrpCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Sub_Prod_Code")%>' Visible="false"></asp:Label> 
             <asp:Label ID="lblMakeCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Make_Code")%>' Visible="false"></asp:Label> 
             <asp:Label ID="lblRegerCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Refg_Code")%>' Visible="false"></asp:Label> 
             <asp:Label ID="lblCompressorCode" runat="server" Style="padding-left: 100px" Text='<% #Bind("Comp_Code")%>' Visible="false"></asp:Label> 
             <asp:Label ID="lblFilePath" runat="server" Visible="false" Style="padding-left: 100px" Text='<% #Bind("Document_Path")%>'></asp:Label> 
            </ItemTemplate> 
            <HeaderStyle CssClass="grdheader" Width="10%" /> 
           </asp:TemplateField> 

           <asp:TemplateField> 
            <HeaderTemplate> 
             Cooling Name 
            </HeaderTemplate> 
            <HeaderStyle HorizontalAlign="Left"></HeaderStyle> 
            <ItemStyle HorizontalAlign="Left" Width="20%" CssClass="grdrow"></ItemStyle> 
            <ItemTemplate> 
             <asp:Label ID="lblCoolingName" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Name")%>'></asp:Label> 
            </ItemTemplate> 
            <HeaderStyle CssClass="grdheader" Width="20%" /> 
           </asp:TemplateField> 

           <asp:TemplateField> 
            <HeaderTemplate> 
             Short Name 
            </HeaderTemplate> 
            <HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="15%"></HeaderStyle> 
            <ItemStyle HorizontalAlign="Left" Width="15%" CssClass="grdrow"></ItemStyle> 

            <ItemTemplate> 
             <asp:Label ID="lblCoolingShortName" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Short_Name")%>'></asp:Label> 
            </ItemTemplate> 

           </asp:TemplateField> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             Cooling Description 
            </HeaderTemplate> 
            <ItemStyle HorizontalAlign="left" Width="45%" CssClass="grdrow"></ItemStyle> 
            <ItemTemplate> 
             <asp:Label ID="lblCoolingDescr" runat="server" Style="padding-left: 10px" Text='<% #Bind("Cool_Descr")%>'></asp:Label> 
            </ItemTemplate> 
            <HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="45%"></HeaderStyle> 
           </asp:TemplateField> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             Action<br /> 

            </HeaderTemplate> 
            <HeaderStyle HorizontalAlign="Left" CssClass="grdheader" Width="10%"></HeaderStyle> 
            <ItemStyle HorizontalAlign="Center" Width="10%" CssClass="grdrow"></ItemStyle> 
            <ItemTemplate> 
             <asp:ImageButton ID="imgbtnEdit" runat="server" ImageUrl="~/images/Edit.png" Width="20px" ToolTip="Edit" CommandName="Edit" Height="20px" /> 
             <asp:ImageButton ID="ImageDelete" runat="server" ImageUrl="~/images/trash1.png" ToolTip="Delete" OnClick="ImageDelete_Click" Width="25px" Height="20px" OnClientClick="return confirmDelete()" /> 
            </ItemTemplate> 
           </asp:TemplateField> 

          </Columns> 
          <PagerStyle HorizontalAlign="Left" BorderWidth="0" BorderStyle="None" /> 

         </asp:GridView> 
        </ContentTemplate> 
        <Triggers> 
         <asp:AsyncPostBackTrigger ControlID="txt_Search" /> 
         <asp:PostBackTrigger ControlID="grd_Master" /> 
        </Triggers> 
       </asp:UpdatePanel> 
      </div> 
     </td> 
    </tr> 
</table> 

下面是CS代碼rowediting

protected void grd_Master_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    try 
    { 
     tab0.Enabled = false; 
     tab1.Enabled = true; 

     grd_Master.EditIndex = e.NewEditIndex; 
     GridViewRow rw = (GridViewRow)grd_Master.Rows[e.NewEditIndex]; 
     Label CoolingCode = (Label)rw.FindControl("Cooling_Code"); 
     Label ProdgrpCode = (Label)rw.FindControl("lblProdGrpCode"); 
     Label SubProdCode = (Label)rw.FindControl("lblSubProdGrpCode"); 
     Label MakeCode = (Label)rw.FindControl("lblMakeCode"); 
     Label ReferCode = (Label)rw.FindControl("lblRegerCode"); 
     Label CompressoreCode = (Label)rw.FindControl("lblCompressorCode"); 
     Label CoolingName = (Label)rw.FindControl("lblCoolingName"); 
     Label CoolingName_Short = (Label)rw.FindControl("lblCoolingShortName"); 
     Label CoolingName_Desc = (Label)rw.FindControl("lblCoolingDescr"); 
     Label lblFilePath = (Label)rw.FindControl("lblFilePath"); 




     txtCoolType.Text = CoolingName.Text.Trim(); 
     txtCoolTypeShortname.Text = CoolingName_Short.Text.Trim(); 
     txtCoolTypeDescrip.Text = CoolingName_Desc.Text.Trim(); 

     ddlProdGrp.SelectedValue = ProdgrpCode.Text; 
     ddlSubProd.SelectedValue = SubProdCode.Text; 
     ddlMake.SelectedValue = MakeCode.Text; 
     ddlCompressor.SelectedValue = CompressoreCode.Text; 
     ddlRefe.SelectedValue = ReferCode.Text; 

     btnsave.Text = "Update"; 
     ViewState["CoolingCode"] = CoolingCode.Text; 
     TabContainer_Item.ActiveTabIndex = 1; 

     Session["CoolingCode"] = CoolingCode.Text; 
     this.fu1.BindGridDoc(); 
    } 
    catch (Exception ex) 
    { 

     Master.ErrorMessage(ex.Message); 
    } 
} 

protected void txt_Search_TextChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     DataSet ds = gn.ExecuteDataset("Search_CoolingType", txt_Search.Text.Trim()); 

     ViewState["CoolingTypeData"] = ds.Tables[0]; 
     if (ds.Tables[0].Rows.Count == 0) 
     { 
      FillEmptyGrid(); 

     } 
     else 
     { 

      grd_Master.DataSource = ds; 
      grd_Master.DataBind(); 

     } 
    } 

    catch (Exception ex) 
    { 
     Master.ErrorMessage(ex.Message); 
    } 
} 

回答

0

您需要確保網格具有焦點。初始點擊可能只是將焦點放在網格上,然後將第二次點擊視爲開始編輯。

一個簡單的ActiveControl = grd_Master;txt_Search_TextChanged事件結束時應該做的伎倆。

+0

我沒有在代碼中獲取ActiveControl屬性。如何設置該屬性。你可以請指導。 – poonam