在 GridView 中触发值更改的回发
Posted
技术标签:
【中文标题】在 GridView 中触发值更改的回发【英文标题】:Trigger postback on value change in GridView 【发布时间】:2017-02-02 01:13:18 【问题描述】:我在这个链接DyntimeSample中使用 dyndatetime
这在gridview中使用,每当用户选择一个新的日期或时间时,我想使用更新面板触发回发。我尝试跟踪分配值的文本框更改事件,但它不起作用。请提出解决方案。 在下面的代码中,我想在更改事件上触发文本框。 编辑:添加代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.dynDateTime.min.js" type="text/javascript"> </script>
<script src="Scripts/calendar-en.min.js" type="text/javascript"></script>
<script type = "text/javascript">
$(document).ready(function ()
$(".Calender").dynDateTime(
showsTime: true,
ifFormat: "%Y/%m/%d %H:%M",
daFormat: "%l;%M %p, %e %m, %Y",
align: "BR",
electric: false,
singleClick: false,
displayArea: ".siblings('.dtcDisplayArea')",
button: ".next()"
);
);
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Person" />
<asp:TemplateField HeaderText="Date Of Birth">
<ItemTemplate>
<asp:TextBox ID="txtDOB" style="border: 0px solid #505050;" AutoPostBack="True" OnTextChanged="txtDOB_OnTextChanged" runat="server" ReadOnly="true" class = "Calender" />
<img src="calender.png" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" />
</div>
</form>
</body>
隐藏代码
using System;
using System.Web.UI.WebControls;
using System.Data;
public partial class _Default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
this.BindGridWithDummyData();
private void BindGridWithDummyData()
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("DateOfBirth");
dt.Rows.Add();
dt.Rows[0]["Name"] = "John";
dt.Rows.Add();
dt.Rows[1]["Name"] = "Sam";
dt.Rows.Add();
dt.Rows[2]["Name"] = "Tommy";
GridView1.DataSource = dt;
GridView1.DataBind();
protected void btnSave_Click(object sender, EventArgs e)
foreach (GridViewRow row in GridView1.Rows)
DateTime dob = DateTime.Parse(Request.Form[row.FindControl("txtDOB").UniqueID]);
//Save the date to Database here
protected void txtDOB_OnTextChanged(object sender, EventArgs e)
【问题讨论】:
分享代码。 已添加代码,请检查。 我没有看到更新面板的任何内容。你试过用吗? 是的。它在更新面板中也不起作用。 【参考方案1】:注意:如果您在更新面板中将 updateMode 设置为条件,则需要添加触发器。在 TextBox1_TextChanged 事件下的代码隐藏文件中,您可以使用 sender.text 属性获取最新值。
尝试使用以下方法:
<asp:ScriptManager ID="scrManager" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:GridView ID="grdNumber" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="txtNumber" runat="server" OnTextChanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="ddlNumber" runat="server" OnSelectedIndexChanged="ddlNumber_SelectedIndexChanged"
AutoPostBack="true">
<asp:ListItem>One</asp:ListItem>
<asp:ListItem>Two</asp:ListItem>
<asp:ListItem>Three</asp:ListItem>
<asp:ListItem>For</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
在代码隐藏中:
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
DataTable dt = new DataTable();
dt.Rows.Add();
dt.Rows.Add();
dt.Rows.Add();
dt.Rows.Add();
grdNumber.DataSource = dt;
grdNumber.DataBind();
protected void ddlNumber_SelectedIndexChanged(object sender, EventArgs e)
protected void TextBox1_TextChanged(object sender, EventArgs e)
var value = (sender as TextBox).Text;
更多信息,请查看此链接:http://www.aspsnippets.com/Articles/Assign-PostBack-Trigger-Full-PostBack-for-LinkButton-inside-GridView-within-AJAX-UpdatePanel-in-ASPNet.aspx
【讨论】:
当值被javascript动态赋值时是否会触发这个事件。 您是否使用 JavaScript 赋值?希望这会奏效。 是的,dynDateTime 会将值设置为 javascript。 基本上,这行得通。我不确定您如何维护更新面板或 dynDateTime。但以上内容肯定会帮助您实现我想要触发或启动 TextBox 的内容。 这不会在javascript分配值时触发文本更改事件,但可以使用__EVENTTARGET获取控件触发的回发,谢谢。以上是关于在 GridView 中触发值更改的回发的主要内容,如果未能解决你的问题,请参考以下文章
由 UpdatePanel 内 GridView 内的 LinkButton 触发的完整回发