C# 文本框在填充javascript后为空
我使用以下代码创建文本框:C# 文本框在填充javascript后为空,c#,javascript,asp.net,C#,Javascript,Asp.net,我使用以下代码创建文本框: <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, positi
<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”:
但是它没有帮助可能是视图状态的问题。尝试在页面加载事件中添加对
Page.IsPostBack
的检查,如下所示:
If(!Page.IsPostBack)
{
//第一次调用的数据绑定
}
我认为这是由于只读:ASP.Net注册了哪些控件在发送页面时是只读的
这些控件的值在回传时被丢弃,并且是regotten(我相信来自ViewState)
解决方法不是在aspx页面上设置
readonly=“true”
,而是使用$(document.ready)(您的函数_here())
(如果您使用jQuery)或主体onLoad
事件来设置它。虽然这对我来说是个新闻,ReadOnly
属性似乎没有跟踪来自客户端的更改。如果您想要“只读”功能,但仍然在服务器上获取值,请在页面加载
方法中输入以下内容:
selectText.Attributes.Add("readonly", "readonly");
删除
中的ReadOnly
(和AutoPostBack
)属性,并且-这在Google中是一个相当快的发现)只是一个猜测,但是删除ReadOnly=“true”
会有区别吗?文本框的值是空的,因为服务器不知道它已经更改了。需要以某种方式通知服务器。通常,这是通过完整或部分回发来完成的。@Doc我认为这就是受保护的void btnUseSelectClick(){}
的含义for@DStanley我认为不会。如果禁用了该值,则不会提交该值,但readonly
不应产生任何影响。我可能错了though@DStanley,你的建议帮助了我,但如果保持文本框只读很重要呢?
selectText.Attributes.Add("readonly", "readonly");