比如说:
    我在一个DataGrid 中有一个控制列。(内容为允许或禁止)<Columns>
   <asp:BoundColumn Visible="False" DataField="ID" HeaderText="ID"></asp:BoundColumn>
   <asp:BoundColumn Visible="False" DataField="stat" HeaderText="stat"></asp:BoundColumn>
   <asp:BoundColumn DataField="model" HeaderText="型号"></asp:BoundColumn>
   <asp:ButtonColumn Text="允许" CommandName="Allow">
    <HeaderStyle Width="8mm"></HeaderStyle>
   </asp:ButtonColumn>
</Columns>然后我在它的一个事件下做了一个判断!private void DGMDL_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
   ListItemType itemType = e.Item.ItemType;
   if ((itemType == ListItemType.Pager) || 
       (itemType == ListItemType.Header) || 
       (itemType == ListItemType.Footer)) 
   {
      return;
   }
   TableCell ThisCell = e.Item.Cells[1] ;
   if ( ThisCell.Text.Trim() == "允许")
   {
      e.Item.Cells[3].Text = "禁止" ;
   }
   else e.Item.Cells[3].Text = "允许" ;   //LinkButton button = (LinkButton)e.Item.Cells[8].FindControl("0"); 
   //e.Item.Attributes["onclick"] = Page.GetPostBackClientHyperlink(button, ""); 
}但现在得出的结果是没有带事件的单元格,也就是不再能点击控制列了,也没有响应,各位大虾,
有没有谁做过类似的,给点代码?

解决方案 »

  1.   

    private void DGMDL_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
       ListItemType itemType = e.Item.ItemType;
       if ((itemType == ListItemType.Pager) || 
           (itemType == ListItemType.Header) || 
           (itemType == ListItemType.Footer)) 
       {
          return;
       }
       TableCell ThisCell = e.Item.Cells[1] ;
       LinkButton button = (LinkButton)e.Item.Cells[3].Controls[0] ;
       if ( ThisCell.Text.Trim() == "允许")
          button.Text = "禁止" ;
       else button.Text = "允许" ;
    }应该没有问题!你试试!