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>

(来自: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

也许是 ViewState 的问题。Page.IsPostBack尝试在页面加载事件中添加检查,如下所示:

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

我相信这是由于 ReadOnly: ASP.Net 注册了哪些控件在向您发送页面时是只读的。

这些控件的值在回发时被丢弃,并且被重新获取(我相信来自 ViewState)。

解决方法不是readonly="true"在 aspx 页面上设置,而是使用$(document).ready(your_function_here();)(如果您使用 jQuery)或 bodyonLoad事件进行设置。

于 2013-01-17T15:06:59.433 回答