2016-07-18 24 views
0

Ich habe an ASPX-Webformular-Anwendung gearbeitet, wo ich eine Gridview mit Textfeldsteuerung habe. Mein Problem ist, ich möchte Text-Wert für dieses Textfeld nur festlegen, wenn es Bindungseigenschaft hat.Überprüfen, ob Gridview spezifische Bind-Eigenschaft enthält oder nicht

<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> 

HINWEIS: Anfangs, wenn Gridview Bindung beim Laden der Seite, ich bin keine Bind-Eigenschaft verwenden aber später ich diese Bind Eigenschaft habe die Einrichtung und dann wieder verbindlich gridview. Vielen Dank im Voraus

Antwort

0

Sie können so etwas wie dies versuchen:

<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> 

mit dieser Utility-Funktion in Code-behind definiert:

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

Erste Ausnahme „Databinding: 'System.Data.DataRowView' enthält keine Eigenschaft mit dem Namen 'txtValue' ". – Amar

+0

Wie ich oben sagte, wenn ich Gridview zum ersten Mal lade, setze ich keine Bind-Eigenschaft, und diese Bind-Eigenschaft wird manuell von Code hinter der Datei – Amar

+0

hinzugefügt Ich modifizierte meine Antwort zu berücksichtigen, dass das Feld nicht immer existieren. – ConnorsFan