<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script language="C#" runat="server">
 
      DataTable Cart;
      DataView CartView;
 
      ICollection CreateDataSource() 
      {
         DataTable dt = new DataTable();
         DataRow dr;
 
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
 
         for (int i = 0; i < 9; i++) 
         {
            dr = dt.NewRow();
 
            dr[0] = i;
            dr[1] = "Item " + i.ToString();
            dr[2] = 1.23 * (i + 1);
 
            dt.Rows.Add(dr);
         }
 
         DataView dv = new DataView(dt);
         return dv;
      }
 
      void Page_Load(Object sender, EventArgs e) 
      {
     
        
         if (!IsPostBack) 
         {
            // Load this data only once.
            ItemsGrid.DataSource= CreateDataSource();
            ItemsGrid.DataBind();
         }
      }
 
      
 
 void Item_Created(Object sender, DataGridItemEventArgs e) 
   {
 
      if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
      {      TableCell myTableCell;
      myTableCell = e.Item.Cells[1];
      Button myDeleteButton;
      myDeleteButton = (Button)myTableCell.Controls[0];      
      myDeleteButton.Attributes.Add("disabled", "true");   
      }
   }
   </script> 
<body><form runat=server> 
<asp:DataGrid id="ItemsGrid"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
AutoGenerateColumns="false"
OnItemCreated="Item_Created"runat="server"><HeaderStyle BackColor="#00aaaa">
</HeaderStyle><Columns><asp:ButtonColumn 
HeaderText="Add to cart" 
ButtonType="PushButton" 
Text="Add" 
/><asp:ButtonColumn 
HeaderText="Remove from cart" 
ButtonType="PushButton" 
Text="Remove" 
/><asp:BoundColumn 
HeaderText="Item" 
DataField="StringValue"/><asp:BoundColumn 
HeaderText="Price" 
DataField="CurrencyValue" 
DataFormatString="{0:c}"><ItemStyle HorizontalAlign="right">
</ItemStyle></asp:BoundColumn>   </Columns></asp:DataGrid></form></body>
</html>

解决方案 »

  1.   

    myTableCell = e.Item.Cells[1];
          Button myDeleteButton;
          myDeleteButton = (Button)myTableCell.Controls[0];      
          myDeleteButton.Attributes.Add("disabled", "true");   3Q
      

  2.   

    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
     
    <html>
       <script language="C#" runat="server">
     
          DataTable Cart;
          DataView CartView;
     
          ICollection CreateDataSource() 
          {
             DataTable dt = new DataTable();
             DataRow dr;
     
             dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
     
             for (int i = 0; i < 9; i++) 
             {
                dr = dt.NewRow();
     
                dr[0] = i;
                dr[1] = "Item " + i.ToString();
      
                dt.Rows.Add(dr);
             }
     
             DataView dv = new DataView(dt);
             return dv;
          }
     
          void Page_Load(Object sender, EventArgs e) 
          {
             if (!IsPostBack) 
             {
                ItemsGrid.DataSource= CreateDataSource();
                ItemsGrid.DataBind();
             }
          }
     
     void Item_DataBound(Object sender, DataGridItemEventArgs e) 
       {
     
          if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
          {
          Label a;
          a = (Label)e.Item.Cells[1].FindControl("a");
          if(a.Text=="Item 3" || a.Text=="Item 5"){
          TableCell myTableCell;
          myTableCell = e.Item.Cells[0];
          Button myDeleteButton;
          myDeleteButton = (Button)myTableCell.Controls[0];      
          myDeleteButton.Attributes.Add("disabled", "true");   
          }
          }
       }
       </script> 
    <body><form runat=server> 
    <asp:DataGrid id="ItemsGrid"
    AutoGenerateColumns="false"
    OnItemDataBound="Item_DataBound"
    runat="server"><Columns><asp:ButtonColumn 
    HeaderText="Remove from cart" 
    ButtonType="PushButton" 
    Text="Remove" 
    />
    <asp:TemplateColumn><HeaderTemplate>
    Item 
    </HeaderTemplate><ItemTemplate>
    <asp:Label id=a
    Text='<%# DataBinder.Eval(Container.DataItem, "StringValue") %>'
    runat="server"/>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </html>