2011-01-29 23 views
1

私は心がゆるいです。他のコントロールの中で、GridViewの中でASP.NETを使用して、私は次のようしている:ASP.NET GridView更新からテキストエリアを取り出す

<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" /> 
まだ

何もありません!何か案は?

+0

データはテキストボックスに表示されますか?あなたのサンプルコードにバインディングはありません。 –

答えて

1

1つのオプションは、隠しフィールドを使用して、テキスト領域に対して変更されたテキストに対して更新することです。あなたは、このようなjQueryを使ってこれを行うことができます:

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

そして、サーバ側で、あなたが隠しフィールドの値を取得することができますし、データベースに保存します。

+0

ええ、ハックの方法私はダウンしている。私はそれを行う "公式の"方法があるかどうか疑問に思っています。私はすべてそれをハックするよりもそれをやるほうが好きです。 –

+0

したがって、テキストボックスのviewstateを有効にすると、ポストバックの間に値が保持されません。 Viewstateはポストバックの間に値を保持する必要があります。 –

+0

です。おそらくViewStateが