2017-11-04 184 views
0

我有一个GridView有两个会话可用于过滤select语句(TimeStartTimeFinish)。我有一个默认值,它们在GridView中显示正确的信息。会话变量更新,但不刷新GridView

我有两个ASP文本框的TextMode设置为时间,我需要更新这些值。这些更新会话变量(已设置标签的值来检查),但不更新我的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

尝试重新绑定您的Gridview当任何textbox值改变。

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(); 
}