2011-11-21 2 views
0

J'ai des données qui s'affichent dans gridview. Si je le tire d'une table, je veux qu'il soit en lecture/écriture, mais de l'autre il suffit de lire. J'ai un SqlDataSource qui peut cracher du texte basé sur l'origine, et oui le texte qu'il crache est précis. J'ai donc mis une étiquette et une zone de texte dans un itemtemplate dans gridview, et les deux ont des propriétés visibles définies dans un booléen public.Utilisation d'une chaîne pour changer les états visibles dans itemtemplate

Le problème est que cela ne s'aligne pas toujours. Parfois, les données d'une propriété passent à l'autre (c'est-à-dire que les données en lecture seule sont affichées en tant que zone de texte), mais ce n'est pas toujours le cas. L'état d'affichage sera souvent l'opposé du texte affiché.

<asp:TemplateField HeaderText="Next Price" SortExpression="newdata"> 
    <ItemTemplate> 
     <asp:TextBox ID="ReadWrite" runat="server" 
      Text='<%# Bind("newdata", "{0:N2}") %>' Width="60px" 
      class="calculate" onchange="calculate()" 
      Visible='<%# ShowBox %>'></asp:TextBox> 
     <asp:Label ID="ReadOnly" runat="server" Text='<%# Bind("newdata", "{0:N2}") %>' 
      Visible='<%# ShowLabel %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

Le code derrière:

protected void MasterDisplay_DataBound(object sender, EventArgs e) 
{ 
    DataSourceSelectArguments sr = new DataSourceSelectArguments(); 
    DataView dv = (DataView)CheckForCommit.Select(sr); 
    if (dv.Count != 0) 
     CommittedOrNot.Text = dv[0][0].ToString(); 
    //for displaying where data is pulled from 
} 

public bool ShowBox 
{ 
    get 
    { 
     return (CommittedOrNot.Text == "This has not yet been committed."); 
    } 
    private set { } 
} 

public bool ShowLabel 
{ 
    get { return (CommittedOrNot.Text != "This has not yet been committed."); } 
    private set { } 
} 

Toutes les idées ce qui cause cette déconnexion?

+0

De plus, il semble que il utilise la version précédente de CommittedOrNot. C'est-à-dire, si je pars sur un ensemble validé (rendu ShowBox = F) et que je passe à un ensemble non-validé ShowBox = F encore, mais ensuite partout où je me déplace prochainement ShowBox = T. CommittedOrNot.Text affiche toujours la sortie correcte. – ScottieB

Répondre

0

se trouve que je avais juste besoin d'ajouter UpdateRows et un DataBind dans Commit_Click

Questions connexes