2013-06-25 3 views
1

.aspx 파일의 팝업 달력에서 선택한 값으로 채워지는 텍스트 상자 (txtShipmentDate)가 있습니다.Textbox.text empty blank

<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의 값이 비어 있습니다. 제출하기 전에 다른 일은 없습니다. 다른 모든 텍스트 상자는 해당 값을 유지합니다.

+1

'ReadOnly = "true"'가 유죄이고 테스트 목적으로 만 제거하려고합니다 –

+0

클라이언트 측 JavaScript를 통해 해당 텍스트를 채우고 있습니까? –

답변

1

보안주의 사항으로 인해 ReadOnly 필드는 포스트 백시 값을 유지하지 않습니다. 이 필드에 대한 사용자 입력을 막고 값을 다시 게시해야하는 경우 - textbox'es ReadOnly 속성을 설정하지 마십시오. 대신 그것을 CSS를 통해 읽기 전용 모양을 제공하고 (당신은 'onSelect를'과 'onpaste'도 처리 할 수 ​​있습니다)

txtShipmentDate.Attributes("onclick") = "this.blur();" 

같은 것을 통해 사용자 입력을 방지합니다. 이렇게하면 사용자 입력이 차단되어 사용자에게 ReadOnly 필드 모양이 완성되고 정적 값이 다시 게시됩니다.