【问题标题】:Getting text out of textarea from a ASP.NET GridView update从 ASP.NET GridView 更新中获取 textarea 中的文本
【发布时间】: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" />

还是什么都没有!有什么想法吗?

【问题讨论】:

  • 数据是否显示在文本框中?我在您的示例代码中没有看到任何绑定。

标签: asp.net gridview textbox textarea


【解决方案1】:

一种选择可能是使用隐藏字段并在为文本区域更改的文本上更新它。你可以像这样用 jQuery 做到这一点:

$("textarea[id$=tbTest]").change(function () {
                $("input[id$=hdnVal]").val($("textarea[id$=tbTest]").val());
            });

然后在服务器端,您可以检索隐藏字段的值并将其保存到您的数据库中。

【讨论】:

  • 是的,我已经失败了。我想知道是否有“官方”的方式来做这件事。我宁愿把它做​​对,也不愿把它搞砸。
  • 那么,如果您为文本框启用视图状态,它不会保留回发之间的值吗? Viewstate 应该在回发之间保持值。
  • 确实如此。我禁用了 ViewState,因为我想尝试查看 ViewState 是否是未更新
  • 您仍然可以使用 和一个 ,但不要使用以下代码:string txt = (TextBox)DonationResultsTable.Rows[e.RowIndex].Cells[6].Controls [1].正文;试试这个:string txt = ((TextBox)DonationResultsTable.Rows[e.RowIndex].Cells[6].FindControl("IntentionInfo")).Text;
  • 我认为您可能会在每次页面加载时绑定您的 GridView。您应该只将它绑定到 !IsPostBack。在这里查看这篇文章:stackoverflow.com/questions/4135777/…
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多