2013-07-24 127 views
0

我試圖使用jquery獲取gridview數據。我已修改textbox上的現有數據,並嘗試使用jquery來獲取該值。但它在textbox中給出了舊值。在textbox中沒有修改值。無法從gridview中的文本框中獲取修改的值

ASPX代碼

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 

    /*javascripts and stylesheets are here*/ 

    <script type="text/javascript"> 

     function Navigate() { 
      $('#dialogDiv').dialog('open'); 
     } 

     $(document).ready(function() { 
      var list = ""; 
      $('#dialogDiv').dialog({ 
       autoOpen: false, 
       resizable: true, 
       width: 300, 
       height: 'auto', 
       buttons: { 
        "Save": function() { 
         $("#<%=Type_GV.ClientID %> tr").each(function() { 
          //Skip first(header) row 
          if (!this.rowIndex) return; 
          var type = $(this).find("td:last").html(); 
          list += type + "</br>"; 
         }); 
         alert(list) 
        } 
       } 
      }); 
     }); 

    </script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 
    </asp:ScriptManager> 
    <div id="dialogDiv" title="Type" style="overflow: hidden"> 
     <div id="TypeDiv" class="divTable"> 
      <div class="divRow"> 
       <div class="divColumn"> 
        <div> 
         <asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional"> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="open" EventName="Click" /> 
          </Triggers> 
          <ContentTemplate> 
           <asp:GridView ID="Type_GV" runat="server" ShowFooter="True" AutoGenerateColumns="False"> 
            <Columns> 
             <asp:TemplateField HeaderText="Type"> 
              <ItemTemplate> 
               <asp:TextBox ID="txtType" runat="server" Text='<%# Bind("Type") %>'></asp:TextBox> 
              </ItemTemplate> 
             </asp:TemplateField> 
            </Columns> 
           </asp:GridView> 
          </ContentTemplate> 
         </asp:UpdatePanel> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
    <asp:Button ID="open" runat="server" Text="Open dialog" OnClientClick="Navigate()" 
     OnClick="open_Clicked" /> 
    <br /> 
    <p> 
     <asp:Button ID="btnSaveType" runat="server" OnClick="btnSaveType_Clicked" Style="visibility: hidden; 
      display: none;" /> 
    </p> 
</asp:Content> 

背後

protected void Page_Load(object sender, EventArgs e) 
    { 


    } 

    protected void open_Clicked(object sender, EventArgs e) 
    { 
      VehicleType vTypeObject = new VehicleType(); 
      Type_GV.DataSource = vTypeObject.GetTypeList(); 
      Type_GV.DataBind(); 
    } 


    protected void btnSaveType_Clicked(object sender, EventArgs e) 
    { 
     foreach (GridViewRow gvr in Type_GV.Rows) 
     { 
      TextBox type = (TextBox)gvr.FindControl("txtType"); 
      Debug.WriteLine("type : " + type.Text);     
     } 
    } 


public class VehicleType 
{ 
    public string Type { get; set; } 

    public List<VehicleType> GetTypeList() 
    { 
     List<VehicleType> list = new List<VehicleType>() 
    { 
     new VehicleType{Type="Type1"}, 
     new VehicleType{Type="Type2"} 
    }; 
     return list; 
    } 
} 

代碼,我該如何解決這個問題?

+0

您是否在保存點擊時收到警報? –

+0

@DKM是的。我在'textbox'上的舊值獲得提醒。不是新的/修改的值。 – Bishan

回答

1

您可以使用此:當您正在使用的更新面板

,異步回發完成並控制已經返回給瀏覽器後this.remove_endRequest()提高。

不確定,但我認爲這個問題,我多次面對這些問題。可能對你有幫助。

See Documentation

Sys.WebForms.PageRequestManager.getInstance().remove_endRequest($(function(){ 
     var list = ""; 
     $('#dialogDiv').dialog({ 
      autoOpen: false, 
      resizable: true, 
      width: 300, 
      height: 'auto', 
      buttons: { 
       "Save": function() { 
        $("#<%=Type_GV.ClientID %> tr").each(function() { 
         //Skip first(header) row 
         if (!this.rowIndex) return; 
         var type = $(this).find("td:last").html(); 
         list += type + "</br>"; 
        }); 
        alert(list) 
       } 
      } 
     }); 
});) 

注:不要取下$(document).ready(function{}))保持原樣,而包括這一項。

+0

我已經添加這樣。 'Sys.WebForms.PageRequestManager.getInstance()。remove_endRequest($(document).ready(function(){/ * Code Here * /}));'。但是'chrome'中的控制檯報告錯誤爲'Uncaught ReferenceError:Sys is not defined'。 'Sys'來自這裏'Sys.WebForms.PageRequestManager' – Bishan

+0

@Bishan將'EnablePartialRendering =「true」'設置爲您的腳本管理器標籤。 –

+0

添加像 ' – Bishan

相關問題