我有一个文本框(txtShipmentDate),其中填充了从.aspx文件中的弹出日历中选择的值。
<tr>
<td align="right" valign="middle" width="125">
Shipment Date:
</td>
<td align="left" valign="middle">
<asp:TextBox Runat="server" ReadOnly="true" Width="75"
ID="txtShipmentDate" CssClass="textbox"></asp:TextBox>
<a title="Select Ship Date" onclick="if(self.gfPop)gfPop.fPopCalendar(document.forms[0].txtShipmentDate);return false;"
href="javascript:void(0)">
<IMG class="PopcalTrigger" height="19" alt="" src="/TOrders/calendarxp/themes/xp/calbtn.gif" width="34" align="absMiddle" border="0"></a>
</td>
</tr>
正确填充文本框。
但是当我单击“提交”按钮时尝试访问文本框中的值时,使用
If txtShipmentDate.Text.Length > 0 Then oShippingDate = Convert.ToDateTime(txtShipmentDate.Text)
texbox中的值为空。在提交之前没有其他任何事情可以解决。所有其他文本框都保留其值。
答案 0 :(得分:1)
由于安全预防措施,ReadOnly字段不会在回发时保留其值。如果您需要阻止用户输入此字段并仍然返回值 - 请不要设置文本框的ReadOnly属性。而是通过CSS给它一个ReadOnly外观,然后通过
之类的东西阻止用户输入txtShipmentDate.Attributes("onclick") = "this.blur();"
(你可能也希望处理'onselect'和'onpaste')。这样就防止了用户输入,为用户提供了完整的ReadOnly字段外观,并且仍然返回值。