2015-01-16 2 views
1

형식이 "날짜"인 다른 TextBox의 사용자가 입력 한 날짜를 기준으로 TextBox를 요일과 자동으로 채 웁니다. 나는 자바 스크립트에서 성공적으로이 작업을 수행했지만, C#에 익숙하지 않고 알아낼 수 없었다. 여기 날짜의 사용자 입력에서 평일 반환 TextBox

는 테스트에서 .aspx 파일을 사용하는 것입니다

<form runat="server" id="test"> 
    <label for="beginning_date">beginning day & date</label> 
    <asp:TextBox runat="server" ID="beginning_day" onChange="GetBeginningDay" ReadOnly="true"></asp:TextBox> 
    <asp:textBox runat="server" ID="beginning_date" type="date" onChange="GetBeginningDay"></asp:textBox> 
</form> 

내가 텍스트 상자 "Beginning_Date"의 날짜 입력을 기반으로 텍스트 상자 "beginning_day"를 채우려.

편집에 추가하려면 : 제안 된 솔루션의

아무도 나를 위해 작동하지 않았다. 내가 제출 버튼과 충돌 할 때 나는 그러나 내가 AutoPostBack을 화재 얻을 수없고 숨김 코드 만 실행 ... ... 내가 필요 달성이 함께 다음 코드를 얻을 수

protected void GetBeginningDay(object sender, EventArgs e) 
    { 
     try 
     {     
      beginning_day.Text = Convert.ToDateTime(beginning_date.Text).DayOfWeek.ToString(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write("Error" + ex.Message); 
     } 
    } 

관리 예외로 인해 다시 게시가 트리거됩니다.

답변

1

나는 약간 마크 업을 수정 한, 이것은 당신이 필요로하는 모든 것을해야한다 "의 onChange"는 ASP.NET 텍스트 상자의 이벤트, OnTextChanged을 사용하도록 변경되었습니다

<label for="beginning_date">beginning day & date</label>  
<asp:TextBox runat="server" ID="beginning_date" OnTextChanged="beginning_date_TextChanged" AutoPostBack="true" type="date" /> 
<asp:TextBox runat="server" ID="beginning_day" ReadOnly="true" /> 

참고. AutoPostBack이 true로 설정되어야하는지 여부를 결정할 수 있지만 반드시 있어야한다고 가정합니다. false이면 AutoPostBack은 양식을 제출하여 양식을 올릴 때까지 기다리고, 참일 경우 즉시 사건을 제기합니다.

또한 WebForms에는 일반적으로 하나가 있으므로 양식을 제거했습니다. 여기

뒤에 코드 :

protected void beginning_date_TextChanged(object sender, EventArgs e) 
{ 
    DateTime date; 
    DateTime.TryParse(beginning_date.Text, out date); 

    beginning_day.Text = date.DayOfWeek.ToString(); 
} 

추가 논리를해야 할 수도 있습니다, 그러나 이것은 그것의 요점이다.

+0

감사합니다. 이벤트를 클라이언트 측이 아닌 서버 측으로 전송할 추가 작업이 필요하다고 생각하십니까? 그 뒤에있는 생각은 자바 스크립트 파일의 필요성을 제거하고 폼의 모든 기능을 하나의 코드 숨김 파일로 중앙 집중화하는 것이 었습니다. – StateofDK

+1

나는 그것이 달려 있다고 생각하지만, 당신은 단지 하나의 입력 요소를 업데이트하는 것보다 더 할 일이 없다면 아마 JavaScript를 고수 할 것입니다. – rrjohnson85

+0

이 코드를 내 코드 숨김에 넣으려고합니다. 변경할 필요가 있다고 가정합니다. var input = (TextBox) sender; 내 컨트롤과 함께 작동하게하려면 어떻게해야할지 모르겠다. – StateofDK

1

이것은 서버 측 asp.net C# 코드를 사용하여 수행 할 수있는 방법입니다.

onChange 이벤트는 __doPostback() 호출없이 서버 측 (C#) 코드를 채울 수없는 클라이언트 측 JavaScript 이벤트입니다. AutoTostChanged 이벤트를 AutoPostback 속성과 함께 사용하면됩니다.

OnTextChanged 이벤트는 AutoPostBack = "true"없이는 작동하지 않습니다.

에서 .aspx 파일 (파일 뒤에 코드)

<asp:TextBox ID="TextBox1" AutoPostBack="true" runat="server" TextMode="Date" OnTextChanged="GetBeginningDay"></asp:TextBox> 
<asp:TextBox ID="TextBox2" runat="server" ReadOnly="true"></asp:TextBox> 

.aspx.cs 파일 답장을

protected void GetBeginningDay(object sender, EventArgs e) 
{ 
    string userInput = TextBox1.Text; 
    DateTime dateTime; 
    if (DateTime.TryParse(userInput, out dateTime)) 
    { 
     TextBox2.Text = dateTime.DayOfWeek.ToString(); 
    } 
} 
+0

OnTextChanged 이벤트는 AutoPostBack이 false로 설정된 경우 (텍스트가 변경되지 않는 한) 발생하지만 다른 것이 다시 게시 될 때까지 실행되지 않습니다. – rrjohnson85