实现DataGrid前有一个CheckBox,并且只能选中一行.

方法一:

给DataGrid增加一个有CheckBox的模版列。

在前台代码中加入如下的JavaScript

<SCRIPT language="JavaScript">
     function SetCheckBoxState()
     {
      var dom=document.all;
      var el=event.srcElement;
      if(el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox" )
      {
     for(i=0;i<dom.length;i++)
     {
          if(dom[i].tagName=="INPUT"&&dom[i].type.toLowerCase()=="checkbox" )
          {
         dom[i].checked=false;
          }
     }
      }
      el.checked=!el.checked;
     }
  </SCRIPT>

然后在后台代码中加入

  private void gridOrder_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if( e.Item.ItemIndex < 0 )  return;
   if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
   {
    System.Web.UI.WebControls.CheckBox chkExport;
    chkExport=(CheckBox)e.Item.FindControl( SERVICE_CHECKBOX_NAME ); //checkbox的名称
    chkExport.Attributes.Add( "OnClick" , "SetCheckBoxState();" );
   }
  }

缺点:如果在一个页面上有两个DataGrid,第二个DataGrid就无法使用了。不然选中了第二个,第一个也没了。

方法二:

给DataGrid增加一个有CheckBox的模版列。

  private void gridService_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
    System.Web.UI.WebControls.CheckBox chkExport;
    chkExport=(CheckBox)e.Item.FindControl( SERVICE_CHECKBOX_NAME ); //checkBox的名称
    chkExport.CheckedChanged += new EventHandler( Service_CheckedChanged );

   }
  }

  private void Service_CheckedChanged(object sender,System.EventArgs e)
  {
   CheckBox chbIsActive = (CheckBox)sender;

   System.Web.UI.WebControls.CheckBox chkExport;

   foreach ( DataGridItem item in gridService.Items )
   {
    chkExport = ( CheckBox )item.FindControl( SERVICE_CHECKBOX_NAME ); checkBox的名称
    
    chkExport.Checked = false;
   }

   chbIsActive.Checked = true;
   
  }

缺点:有点延迟,毕竟是服务器段的控件嘛。

如果有两个DataGrid,两个都要实现单选,第二个就用这种方法吧。

顺便把取到编号的方法也写一下吧。

  private int GetServiceCode()
  {
   int tempFactorCode = -1 ;
   System.Web.UI.WebControls.CheckBox chkExport;

   foreach ( DataGridItem item in gridService.Items )
   {
    chkExport = ( CheckBox )item.FindControl( SERVICE_CHECKBOX_NAME );

    if( chkExport.Checked )
    {
     //编码
     tempFactorCode = Convert.ToInt32( item.Cells[

      SERVICE_CODE_INDEX ].Text );  //编号所在的列
     
     break;
    }
   }

   return tempFactorCode;
  }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值