2010-08-02 6 views
0

J'ai un site intranet asp.net hébergé sur IIS sur mon ordinateur.Obtenir les résultats de la requête mise à jour sur la page

Sur une page, vous pouvez entrer deux ID utilisateur et obtenir une comparaison côte à côte de leurs rôles dans notre système (application personnalisée).

Je l'utilise souvent pour ajouter des rôles lorsque je configure de nouveaux utilisateurs. Après l'exécution de la requête, si je change un rôle et réexécute la requête, les résultats mis à jour ne seront plus affichés. C'est en quelque sorte caché. Je dois aller à une autre page et revenir et les exécuter la requête pour obtenir des résultats mis à jour.

Comment éviter d'avoir à naviguer loin pour obtenir les résultats de la requête mis à jour displayed.n


est ici le code

<asp:Label ID="Label1" runat="server" Text="Username"></asp:Label> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <br /> 
    <asp:Label ID="Label2" runat="server" Text="Username"></asp:Label> 
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
    <asp:Button ID="Button1" runat="server" 
     Text="Compare Permissions" /> 
    <br /><br /> 
    <asp:GridView ID="GridView1" runat="server" CssClass="mGrid" DataSourceID="SqlDataSource1"> 

    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="WITH 
firstPerson AS 
(
select username, security_role from user_role 
where username=upper(:Username1) 
), 
secondPerson as 
(
select username, security_role from user_role 
where username=upper(:UserName2) 
) 
select firstPerson.username , firstPerson.security_role,secondPerson.username,secondPerson.security_role from firstPerson FULL JOIN secondPerson 
    on firstPerson.security_role=secondPerson.security_role order by firstPerson.security_role, secondPerson.Security_role"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="TextBox1" Name="Username1" 
       PropertyName="Text" /> 
      <asp:ControlParameter ControlID="TextBox2" Name="UserName2" 
       PropertyName="Text" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
+1

Je posterais votre code qui reçoit vos données et comment vous l'affichez pour obtenir une meilleure aide. –

Répondre

0

Je pense que le problème est simplement que lorsque vous ajoutez ces nouvelles valeurs , vous n'êtes pas en train de rafraîchir votre gridview. Il n'y a aucun contrôle qui peut "réaliser automagiquement" que les données ont changé. Au lieu de cela, vous devez le faire manuellement, en reliant votre contrôle de vue de données à ses (nouvelles) données avec DataBind().

0

Vérifiez où vous recevez vos données.

Si vous l'avez dans une instruction if comme

if(!IsPostBack) 

Cela signifie que vous n'obtiendrez les données lors de la première course. Lorsque vous naviguez et que vous revenez, vous rechargez la page pour la première fois.

+0

Habituellement 'if (! IsPostBack)' est la bonne chose à faire. Sinon, le code sera exécuté sur chaque post-back - ce qu'il ne veut pas s'il a beaucoup de contrôles sur sa page qui sont 'autopostback =" true "' –

+0

@ rlb.usa Vous avez raison, c'est correct chose à faire. Cependant, selon son code s'il obtient un DataTable sur! IsPostBack, il peut avoir besoin d'être rafraîchi à chaque chargement. cela dépend vraiment de la façon dont il est mis en œuvre. –

Questions connexes