从 ASP.NET GridView 更新中获取 textarea 中的文本
Posted
技术标签:
【中文标题】从 ASP.NET GridView 更新中获取 textarea 中的文本【英文标题】:Getting text out of textarea from a ASP.NET GridView update 【发布时间】:2011-06-17 20:29:39 【问题描述】:我疯了。在 GridView 中使用 ASP.NET 以及其他控件,我有以下内容:
<asp:TemplateField HeaderText="Intention">
<EditItemTemplate>
<asp:TextBox ID="IntentionInfo" Enabled="true" TextMode="MultiLine" Wrap="true" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:TextBox ID="IntentionInfo" Enabled="false" TextMode="MultiLine" runat="server" />
</ItemTemplate>
</asp:TemplateField>
我想从这个文本区域中取出值并保存在数据库中。但是,在服务器端,我尝试将值提取出来,如下所示:
string txt = (TextBox)DonationResultsTable.Rows[e.RowIndex].Cells[6].Controls[1].Text;
...但我不断收到发送给客户的值。
我写了这个 javascript,我可以看到 DOM 中的值发生了变化,但服务器仍然保持旧值。
$("textarea").change(function()
var txt = $(this).val();
$(this).html(txt).text(txt);
);
所以我猜是 ViewState,但我为这些控件禁用了它,如下所示:
<asp:TextBox ID="IntentionInfo" ViewStateMode="Disabled" Enabled="false" TextMode="MultiLine" runat="server" />
还是什么都没有!有什么想法吗?
【问题讨论】:
数据是否显示在文本框中?我在您的示例代码中没有看到任何绑定。 【参考方案1】:一种选择可能是使用隐藏字段并在为文本区域更改的文本上更新它。你可以像这样用 jQuery 做到这一点:
$("textarea[id$=tbTest]").change(function ()
$("input[id$=hdnVal]").val($("textarea[id$=tbTest]").val());
);
然后在服务器端,您可以检索隐藏字段的值并将其保存到您的数据库中。
【讨论】:
是的,我已经失败了。我想知道是否有“官方”的方式来做这件事。我宁愿把它做对,也不愿把它搞砸。 那么,如果您为文本框启用视图状态,它不会保留回发之间的值吗? Viewstate 应该在回发之间保持值。 确实如此。我禁用了 ViewState,因为我想尝试查看 ViewState 是否是未更新 您仍然可以使用以上是关于从 ASP.NET GridView 更新中获取 textarea 中的文本的主要内容,如果未能解决你的问题,请参考以下文章
获取 ASP.NET GridView 单元格值并在 JQuery 进度条中显示
ASP .NET - 在 GridView 中更新之前保存现有数据的副本