簡體   English   中英

如何在 PostBack() 后保留只讀文本框的文本?

[英]How to keep the Text of a Read only TextBox after PostBack()?

我有一個 ASP.NET TextBox ,我希望它是ReadOnly (用戶使用另一個控件修改它)

但是當有PostBack() ,文本被重置為空字符串。

我知道,如果您將TextBoxReadOnly屬性設置為True ,則其內容不會通過PostBack()保存。

有沒有辦法在PostBack()之后保留內容並使TextBox不能被用戶編輯?

我試圖將Enabled屬性設置為False ,但在PostBack()之后內容仍然沒有保存。

我發現的另一種解決方案更簡單:

將此添加到頁面加載方法:

protected void Page_Load(object sender, EventArgs e)
{
     TextBox1.Attributes.Add("readonly", "readonly");
}

讓您的其他控件將值存儲在隱藏字段中,並在回發時,從隱藏字段中提取值並將其推送到服務器端的文本框中。

txtStartDate.Attributes.Add("readonly", "readonly"); 在最佳解決方案中的最佳頁面加載,而不是 Javascript、隱藏變量、緩存、cookie、會話和緩存。

使用Request.Form[txtDate.UniqueID]獲取值。 你會得到的 !!

我有同樣的問題,但使用 Knockout 綁定“啟用”和 ASP.Net 服務器控制文本。

這邊走:

<asp:TextBox ID="txtCity" runat="server" required="required" class="form-control" placeholder="City" data-bind="value: city, enable: !hasZipCode()"></asp:TextBox>

但是,提交表單時,此字段值始終為空。 我認為這是因為如果控件被禁用,它就不會持久存在於 ViewState 鏈上。

我解決了用 'attr{ readonly: hasZipCode}' 替換 bindig 'enable'

    <asp:TextBox ID="txtCity" runat="server" required="required" class="form-control" placeholder="City" data-bind="attr{ value: city, readonly: hasZipCode }">/asp:TextBox>

這是一種在 Textbox 本身的 onfocus 事件中使用 javascript 的方法。

用 javascript 這樣做的好處是你不需要在后面的代碼中做,如果你需要在 gridviews 或類似的東西中做這件事可能會很困難。

此 javascript 代碼僅在 Internet Explorer 上進行測試,並且它的某些部分僅適用於 IE,例如 createTextRange 部分,它只是為了使插入符最終出現在文本框中的文本開頭,但該部分可以如果不需要,可以跳過。

如果這項技術的核心適用於其他瀏覽器,那么應​​該可以使代碼跨瀏覽器。 這里的想法的核心是設置只讀后的模糊,然后再次設置焦點的超時。

如果您只設置只讀,那么它不會變為只讀,直到您下次給文本框焦點。

當然,代碼可以放入一個函數中,而不是用“this”作為參數調用。

  <asp:TextBox 
    ID="txtSomething" 
    runat="server"
    Text='<%# Bind("someData") %>'
    onfocus="
var rng = this.createTextRange();
rng.collapse();
rng.select();
if (this.allowFocusevent=='0') {return;};
this.allowFocusevent='0';
this.readOnly=true;
this.blur();
var that=this;
setTimeout(function(){that.focus()},0);
"
  />

將文本框的 ContentEditable 屬性設置為 false ContentEditable="false" .. 它不會允許您編輯文本框的內容,即;將使文本框只讀,並且還會使回發后的值保留在文本框中.. 我認為它最簡單的方法來做到這一點..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM