1

このコードでテキストボックスを作成します:

<div style="clear:left;">
    <asp:TextBox TextMode="MultiLine" runat="server" ID="selectText" ReadOnly="true" Width="560px" Height="50px"></asp:TextBox>
</div>

私はこのコードでそれを埋めます:

elSelText.value = elSelText.value.substr(0, position) + chosenoption2.value + " ";

そして、テキストボックスの値をサーバーに送信しようとしましたが、空です!

protected void btnUseSelectClick(object sender, EventArgs e)
    {
        sourceDetails.SelectCommand += " and " + selectText.Text;
        Session["FilterSelectCommand"] = sourceDetails.SelectCommand;
        tableResults.DataBind();
    }

アドバイスで、 AutoPostBack="true" を追加しました:

<div style="clear:left;">
    <asp:TextBox TextMode="MultiLine" runat="server" AutoPostBack="true" ID="selectText" ReadOnly="true" Width="560px" Height="50px"></asp:TextBox>
</div>

しかし、それは役に立ちませんでした

4

3 に答える 3

2

私にとってはニュースですが、ReadOnlyプロパティはクライアントからの変更を追跡していないようです. 「読み取り専用」機能が必要であるが、サーバーで値を取得する場合は、Page_Loadメソッドに次のように記述します。

selectText.Attributes.Add("readonly", "readonly");

タグのReadOnly(and AutoPostBack) プロパティを削除します。<asp:TextBox>

( From: http://aspadvice.com/blogs/joteke/archive/2006/04/12/16409.aspxおよびhttp://forums.asp.net/t/1467081.aspx - かなり迅速な検索でしたグーグル)

于 2013-01-17T15:07:31.643 に答える
0

これは ReadOnly によるものだと思います: ASP.Net は、ページを送信するときにどのコントロールが読み取り専用であるかを登録します。

これらのコントロールの値は、ポストバック時に破棄され、再取得されます (ViewState からだと思います)。

これを回避するreadonly="true"には、aspx ページで設定するのではなく、$(document).ready(your_function_here();)(jQuery を使用している場合) または bodyonLoadイベントで設定します。

于 2013-01-17T15:06:59.433 に答える
0

おそらくViewStateの問題です。Page.IsPostBack次のように、ページ読み込みイベントにチェックを追加してみてください。

If(!Page.IsPostBack)
{
    // Data binding for the first call
}
于 2013-01-17T14:55:45.397 に答える