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 SetEnablePartialRendering=“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)
}
}
});
});)