2016-07-18 2 views
0

J'ai travaillé sur l'application Webform ASPX dans laquelle j'ai une vue de grille ayant un contrôle de zone de texte. Mon problème est, je veux placer la valeur de texte pour cette zone de texte seulement quand elle a la propriété de lien.Vérification si Gridview contient ou non une propriété Bind spécifique

<asp:GridView ID="grvShowRecord" runat="server" AutoGenerateColumns="False"> 
<Columns> 
    <asp:TemplateField HeaderText="Value"> 
     <ItemTemplate> 
      -- Something like this, i don't know how to write in ASPX, but in Razor it will be something like 
      @{ 
       if(Bind("txtValue")!=null) -- IF gridview has Bind("txtValue") property then show textbox else show label 
       { 
        <asp:TextBox ID="txtValue" runat="server" Text='<%# Bind("txtValue") %>' ></asp:TextBox>  
       } 
       else 
       { 
        <asp:Label ID="lblValue" runat="server" Text="0" ></asp:TextBox> 
       } 
      }       
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

NOTE: Dans un premier temps lors de la liaison Gridview sur chargement de la page, je ne suis pas en utilisant une propriété Bind mais plus tard je suis de définir cette propriété Bind puis lier gridview à nouveau. Merci à l'avance

Répondre

0

Vous pouvez essayer quelque chose comme ceci:

<asp:TemplateField HeaderText="Value"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtValue" runat="server" Text='<%# Bind("txtValue") %>' Visible='<%# !IsNullValue("txtValue") %>' /> 
     <asp:Label ID="lblValue" runat="server" Text="0" Visible='<%# IsNullValue("txtValue") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 

avec cette fonction d'utilité définie dans le code-behind:

protected bool IsNullValue(string fieldName) 
{ 
    try 
    { 
     object value = Eval(fieldName); 
     return Convert.IsDBNull(value) || value == null || value.ToString() == string.Empty; 
    } 
    catch 
    { 
     return true; 
    } 
} 
+0

exception Obtenir « DataBinding: 'System.Data.DataRowView' ne contient pas de propriété avec le nom 'txtValue' ". – Amar

+0

Comme je l'ai dit plus haut quand je charge le gridview, je ne définis aucune propriété Bind, et cette propriété Bind est ajoutée manuellement à partir du fichier Code Behind – Amar

+0

J'ai modifié ma réponse pour prendre en compte le fait que le champ n'est pas toujours exister. – ConnorsFan