2017-11-04 5 views
0

두 개의 세션 vairable을 사용하여 select 문 (TimeStartTimeFinish)을 필터링하는 데 사용되는 GridView가 있습니다. GridView에 올바른 정보를 표시하는 기본값이 있습니다.세션 변수를 업데이트하고 있지만 그리드 뷰를 새로 고치지 않습니다

이 값을 업데이트해야하는 TextMode가 Time으로 설정된 두 개의 ASP TextBox가 있습니다. 이들은 세션 변수를 업데이트하고 (레이블 값을 확인하도록 설정 했음) my GridView의 select 문을 업데이트하지 않습니다.

동일한 페이지에서 다른 GridView와 동일한 작업을 수행했습니다. 유일한 차이점은 Int32의 세션 변수이며 GridView의 IndexChanged 이벤트에서 설정되고이 작업에 대해 왜 작동하지 않는지 혼란 스럽습니다. . 의 GridView에 대한

출처 : 텍스트 상자에 뒤

<asp:GridView ID="gvAvailableVets" runat="server" AutoGenerateColumns="False" DataKeyNames="VetID" DataSourceID="AvailableVetsDataSource"> 
     <Columns> 
      <asp:BoundField DataField="VetID" HeaderText="VetID" ReadOnly="True" SortExpression="VetID" /> 
      <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> 
      <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> 
      <asp:BoundField DataField="MobileNumber" HeaderText="MobileNumber" SortExpression="MobileNumber" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="AvailableVetsDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:VetPracticeConnectionString %>" SelectCommand="SELECT DISTINCT Veternarians.VetID, FirstName, LastName, MobileNumber FROM dbo.Veternarians 
INNER JOIN dbo.VetHours 
ON Veternarians.VetID = VetHours.VetID 
INNER JOIN dbo.Appointments 
ON Veternarians.VetID = Appointments.VetID 
WHERE @beginTime &gt; VetHours.StartTime 
AND @endTime &lt; VetHours.EndTime 
AND (@beginTime &gt; Appointments.EndTime 
OR @endTime &lt; Appointments.BeginTime) "> 
       <SelectParameters> 
        <asp:SessionParameter DefaultValue="9:00" Name="beginTime" SessionField="TimeStart" Type="String" /> 
        <asp:SessionParameter DefaultValue="10:00" Name="endTime" SessionField="TimeFinish" Type="String" /> 
       </SelectParameters> 
      </asp:SqlDataSource> 

C# 코드 :

protected void txtTimeBegin_TextChanged(object sender, EventArgs e) { 
    Session["TimeStart"] = txtTimeBegin.Text; 
    // Used for debugging 
    lblDebug.Text = Session["TimeStart"].ToString(); 
} 

protected void txtTimeEnd_TextChanged(object sender, EventArgs e) { 
    Session["TimeFinish"] = txtTimeEnd.Text; 
} 

답변

0

시도는 어떤 textbox 값이 변경 Gridview 때 바인딩합니다.

protected void txtTimeBegin_TextChanged(object sender, EventArgs e) 
{ 
    Session["TimeStart"] = txtTimeBegin.Text; 
    gvAvailableVets.DataBind(); 
// Used for debugging 
    lblDebug.Text = Session["TimeStart"].ToString(); 
} 
protected void txtTimeEnd_TextChanged(object sender, EventArgs e) 
{ 
    Session["TimeFinish"] = txtTimeEnd.Text; 
    gvAvailableVets.DataBind(); 
}