2016-11-02 2 views
2

ist habe ich diese GridView, die auf das füllt Page_Load:Deaktivieren Button wenn Boundfield Null

protected void Page_Load(object sender, EventArgs e) { 
    if (!Page.IsPostBack) { 
    GridView1.DataSource = actBO.BuscarActividades(); 
    GridView1.DataBind(); 
    } 
} 

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" > 
     <Columns> 
      <asp:BoundField DataField="Id" HeaderText="ID" Visible="False" /> 
      <asp:BoundField DataField="Class" HeaderText="Class" /> 
      <asp:BoundField DataField="Day" HeaderText="Day" /> 
      <asp:BoundField DataField="Time" HeaderText="Time" /> 
      <asp:BoundField DataField="Vacants" HeaderText="Vacants" />   

      <asp:ButtonField ButtonType="Button" HeaderText="Book" Text="Book"/> 

     </Columns> 
</asp:GridView> 

Wo Spalte „Vacants“ zeigt eine int (es die Menge an freien Buchung Räume repräsentiert in eine Klasse).

Jede Zeile enthält eine Schaltfläche zum Buchen einer bestimmten Klasse. Ich muss eine Bedingung für, wenn das Feld "Vacants" ist Null, so dass die Schaltfläche "Buchen" deaktiviert werden.

So weit sieht es jetzt aus: image.

Wie Sie sehen können, muss ich die Schaltfläche deaktivieren, wenn es keine freien Stellen mehr gibt. Es sollte nicht möglich sein, darauf zu klicken.

Antwort

0

Um dies zu tun, müssen Sie OnRowDataBound Ereignis registrieren. Weitere Erläuterungen finden Sie in here.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> 
     <Columns> 
      <asp:BoundField DataField="Id" HeaderText="ID" Visible="False" /> 
      <asp:BoundField DataField="Class" HeaderText="Class" /> 
      <asp:BoundField DataField="Day" HeaderText="Day" /> 
      <asp:BoundField DataField="Time" HeaderText="Time" /> 
      <asp:BoundField DataField="Vacants" HeaderText="Vacants" />   
      <asp:ButtonField ButtonType="Button" HeaderText="Book" Text="Book"/> 
     </Columns> 
</asp:GridView> 


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // get your button via the column index; ideally you could use template field and put your own button inside 
     var button = e.Row.Cell[5].Controls[0] as Button; 
     int vacant = 0; 
     var vacantVal = int.TryParse(e.Row.Cell[4].Text, out vacant); 
     if (button != null) 
     { 
      button.Enabled = vacant > 0; 
     } 
    } 
} 

Ich hoffe, es hilft.

Verwandte Themen