简体   繁体   English

会话变量更新,但不刷新gridview

[英]Session variables updating, but not refreshing gridview

I have a GridView which has two session vairables used to filter the select statement ( TimeStart and TimeFinish ). 我有一个GridView,其中有两个会话变量用于过滤select语句( TimeStartTimeFinish )。 I have a default value for these, which displays the correct information in the GridView. 我有一个默认值,它们在GridView中显示正确的信息。

I have two ASP TextBoxes with TextMode set to Time which I need to update these values. 我有两个ASP TextBoxes,其TextMode设置为Time,我需要更新这些值。 These update the session variables (have set a label's value to check), but do not update the select statement of my GridView. 这些会更新会话变量(已设置要检查的标签值),但未更新GridView的select语句。

I've done something Identical for another GridView on the same page, the only difference being that the session variable in an Int32 and being set from a GridView's IndexChanged event, and am confused as to why it's not working for this one. 我在同一页上为另一个GridView做了相同的事情,唯一的区别是Int32中的会话变量是通过GridView的IndexChanged事件设置的,并且对于为什么它不适用于此事件感到困惑。

Source for GridView: 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# code behind for the TextBoxes: TextBoxes的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;
}

Try to rebind your Gridview when any textbox value changed. 当任何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();
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM