2016-10-11 9 views
0

私は、ユーザーがテキストボックスに情報を入力できるテキストボックスを持つGridViewを持っており、テキストボックスからの値に基づいてグリッド上に行を作成します。しかし、行をグリッドに追加するボタンはポストバックを引き起こしているので、コード内のすべての値が失われます。ポストバック後の値の損失を止める方法はありますか?

<div style="padding-top:20px"> 
       <fieldset class="groupbox_nohide" >  
        <div style="width:100%"> 
         <asp:UpdatePanel ID="udpCosts" UpdateMode="Conditional" runat="server"> 
          <ContentTemplate> 
           <asp:GridView style="width:75%;float:left" 
            ID="gvCosts" 
            ShowHeaderWhenEmpty="true" 
            CssClass="tblResults" 
            runat="server" 
            OnRowDataBound="gvCosts_RowDataBound"        
            DataKeyField="ID" 
            AutoGenerateColumns="false" 
            allowpaging="false" 
            AlternatingRowStyle-BackColor="#EEEEEE"> 
            <HeaderStyle CssClass="tblResultsHeader" /> 
            <Columns>  
             <asp:BoundField DataField="CreditorCode" HeaderText="Creditor Code"></asp:BoundField> 
            </Columns> 
           </asp:GridView> 
          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="btnCreateCost" /> 
           <asp:AsyncPostBackTrigger ControlID="btnUpdateCost" /> 
          </Triggers> 
         </asp:UpdatePanel> 
         <div id="divAddEditPiece" runat="server">  
       <table> 
        <tr class="tblResults"> 
         <td class="header" style="border-right:2px"> 
          Creditor A/C<label style="color:Red"></label> 
         </td> 
        </tr> 
        <tr class="tblResults"> 

         <td class="tblAddDetail" style="border-right:2px"> 
          <a style="float:left;width:16px;height:16px;margin-right:0px;left:0px;top:1px" title="Pick from list..." class="iconSearch" id="btnAddDetailCreditor"></a> 
          <asp:HiddenField ID="hfCreditorID" runat="server" /> 
          <input type="text" id="txtAddEditCreditorCode" class="lookuppopup" style="text-transform:uppercase;width:80px" runat="server"/> 
         </td> 
         <td class="tblAddDetail" colspan="15"> 
          <asp:LinkButton ID="btnCreateCost" OnClientClick="tinyMCE.triggerSave(false, true);" runat="server" style="float:left;width:25px" CssClass="btnNewSmall">Add</asp:LinkButton> 
         </td> 
        </tr>  
       </table> 
      </div> 

次にJavaScriptコードでのHiddenFieldとテキストボックスがセットされますそれらの値:グリッドとテキストボックス用

コード

$('#<%= hfCreditorID.ClientID %>').val(result.ID); 
$('#<%= txtAddEditCreditorCode.ClientID %>').val(result.AccountCode); 

しかし、すぐに私が作成したボタンをクリックして値空白に戻すようにしてください。隠しフィールドの背後のコードでは、テキストボックスは常に空白です。

protected override void OnInit(EventArgs e) 
{ 
    btnCreateCost.Click += new EventHandler(btnCreateCost_Click); 
} 
protected void btnCreateCost_Click(object sender, EventArgs e) 
    { 
     int tmpCredID; 

     bool valid = true; 
     string ErrMsg = "Error: The following fields cannot be empty:"; 

     if (!int.TryParse(hfCreditorID.Value, out tmpCredID)) 
     { 
      valid = false; 
      ErrMsg += "<br />Creditor Code"; 
     } 
} 

これらの値をコードの背後に渡すにはどうすればよいですか?

+0

@ S.Akbari申し訳ありません申し訳ありませんが、私は何をする必要があるのか​​分かりません。何を結びつける必要がありますか? – user123456789

+0

コントロールパネル(隠しフィールド、テキストボックス)は更新パネルの外にあり、したがって非同期ポストバックの外側にあります.ContentPanelContentTemplateタグ内のコントロールを移動してみてください... – Dave

+0

@Dave私は疲れましたが、まだ来ています空白はコードの背後にあります – user123456789

答えて

0

btnCreateCostのクリックイベントをjqueryに追加します。次に、あなたの仕事をするためにajax投稿を使うことができます。

$('#btnCreateCost').click(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     type: "Post", 
     url: "yourwebmethodurl", 
     data: "{'parametername':'" + parametervalue + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      alert(mes); 
     }, 
     error: function (err) { 
      alert(err); 
     } 
    }) 
}); 

ここでは、この例が出てきたページです。私は2つのポストを取って一緒に置く。 https://forums.asp.net/t/2047043.aspx?Stop+Page+Post+Back+using+Javascript+jQuery

関連する問題