2017-11-04 19 views
0

私は、select文(TimeStartTimeFinish)をフィルタリングするために2つのセッションvairablesを持つGridViewを持っています。私はGridViewに正しい情報を表示するこれらのデフォルト値を持っています。セッション変数は更新されますが、グリッドビューはリフレッシュされません

私はこれらの値を更新する必要があるTimeにTextModeを設定した2つのASP TextBoxを持っています。これらはセッション変数を更新します(ラベルの値をチェックするように設定しています)が、私の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(); 
} 
関連する問題