C# Can';无法从gridview中的文本框中获取修改后的值

C# Can';无法从gridview中的文本框中获取修改后的值,c#,jquery,asp.net,gridview,C#,Jquery,Asp.net,Gridview,我正在尝试使用jquery获取gridview数据。我修改了textbox上的现有数据,并尝试使用jquery获取该值。但它在文本框中给出了旧值。未修改文本框中的值 ASPX代码 <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> /*javascripts and stylesheets are here*/ <script type="text/jav

我正在尝试使用
jquery
获取
gridview
数据。我修改了
textbox
上的现有数据,并尝试使用
jquery
获取该值。但它在
文本框中给出了旧值。未修改
文本框中的值

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>

/*这里有Java脚本和样式表*/
函数导航(){
$('dialogDiv')。dialog('open');
}
$(文档).ready(函数(){
var list=“”;
$('#dialogDiv')。dialog({
自动打开:错误,
可调整大小:正确,
宽度:300,
高度:“自动”,
按钮:{
“保存”:函数(){
$(“#tr”)。每个(函数){
//跳过第一(标题)行
如果(!this.rowIndex)返回;
var type=$(this.find(“td:last”).html();
列表+=类型+“
”; }); 警报(列表) } } }); });

代码隐藏

    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;
    }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
}
已单击受保护的无效打开(对象发送者,事件参数e)
{
VehicleType vTypeObject=新VehicleType();
Type_GV.DataSource=vTypeObject.GetTypeList();
键入_GV.DataBind();
}
已单击受保护的无效btnSaveType_(对象发送者,事件参数e)
{
foreach(GridViewRow gvr,类型为_GV.Rows)
{
TextBox type=(TextBox)gvr.FindControl(“txtType”);
Debug.WriteLine(“type:+type.Text”);
}
}
公营车辆类型
{
公共字符串类型{get;set;}
公共列表GetTypeList()
{
列表=新列表()
{
新车辆类型{Type=“Type1”},
新车辆类型{Type=“Type2”}
};
退货清单;
}
}
如何解决此问题?

您可以使用以下方法:

在使用更新面板时,异步回发完成且控件返回到浏览器后,将引发
this.remove\u endRequest()

不确定,但我认为这就是问题所在,我曾多次面对此类问题。可能对你有帮助

Sys.WebForms.PageRequestManager.getInstance().remove\u endRequest($(函数)(){
var list=“”;
$('#dialogDiv')。dialog({
自动打开:错误,
可调整大小:正确,
宽度:300,
高度:“自动”,
按钮:{
“保存”:函数(){
$(“#tr”)。每个(函数){
//跳过第一(标题)行
如果(!this.rowIndex)返回;
var type=$(this.find(“td:last”).html();
列表+=类型+“
”; }); 警报(列表) } } }); });)

注意:不要删除
$(文档)。准备好(函数{}))
保持原样,并包括这一个。

您在保存单击时收到警报吗?@DKM是的。我在保存单击时收到警报,在
文本框
上使用旧值。不是新的/修改的值。我添加了这样的值<代码>Sys.WebForms.PageRequestManager.getInstance().remove_endRequest($(document.ready)(函数(){/*code Here*/}))。但是
chrome
中的控制台将错误报告为
uncaughtreferenceerror:Sys未定义
Sys
来自这里
Sys.WebForms.PageRequestManager
@Bishan Set
EnablePartialRendering=“true”
到脚本管理器标记。添加like
后仍然会出现相同的错误,现在只剩下一个选项将
标记放入
,您不是在使用母版页吗?还是这是母版页?我有母版页。但不是这个。
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)
                }
            }
        });
});)