关于GridView

//—————————————————新增总结————————————————————

1.GridView的多选效果(注意一个字都不要错才能运行)

(1)先在JavaScript中写代码:

<head runat="server">
<script language="javascript">
    function GetAllCheckBox(CheckAll)
   {
        var items=document.getElementsByTagName_r("input");
        for(i=0;i<items.length;i++)
        {
            if(items[i].type=="checkbox")
            {
                items[i].checked=CheckAll.checked;                
            }
        }
   }
</script>
    <title>无标题页</title>

(2)在控件的onclick事件中写代码(即使控件没有这个事件,也要硬写上去)

<asp:CheckBox ID="chkCheckAll" runat="server" Text="全选" onclick="javascript:GetAllCheckBox(this)"/>

 

2.GridView的光棒效果:——要在它的行绑定事件中写:里面注释的即是。

 //GridView的行绑定事件
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        if (e.Row.RowType == DataControlRowType.DataRow)
        {
         
            if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
            {
                //关于多选框
                CheckBox box = (CheckBox)e.Row.Cells[7].FindControl("CboxSelect");
                if (MessageManager.IDList != null)
                {
                    if (MessageManager.IDList.Contains( box.Text))
                    {
                        box.Checked = true;  
                    }
                }
              //为GridView添加光棒效果
                e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
              //为删除按钮添加确认对话框属性
              //  ((Button)e.Row.Cells[6].FindControl("btnDel")).Attributes.Add("onclick", "javascript:return confirm('您确认要删除该数据吗?')");      
            }
        }
    }

 3.要实现这么一些功能:

(1)在GridView的信息列表中绑定的是一些信息,点击这些信息跳到一个信息的详细页面中,当再回来查看信息列表时,这时发现GridView的页数变成了第一页,还得再翻开原来的页数,很麻烦.

(2)用Ajax+时间控件不停地刷新这个GridView以保证信息数据的及时更新,但是向GridView的模版列再添加一组CheckBox,做成多选的功能时,由于GridView是不停的刷新的,所以CheckBox选中的状态无法保持。

 

针对这两个功能,我的做法是在BLL中定义两个变量来保持状态,并做相应的判断,发现果然好用。

但是也遇到一个小问题:点击CheckBox选中和不选中,但是这一行的信息ID却无法获得,所以我只能在行绑定事件中把CheckBox的Text设置为这一行的ID,以便于在CheckBox的Change事件中获得相应的Id来进行执行删除操作。这个问题是否还有更好的办法值得考虑。

 

4.GridView中的删除按钮事件:
GridView中的删除按钮是这样做的:
(1)先在GridView中拖入一个模板列
(2)然后在这个模板列中拖入一个按钮,在这个按钮上设置属性:
CommandArgument='<%#DataBinder.eval_r(Container.DataItem,"ID")%>';
意思就是把GridView中绑定的每列的ID的值都绑定到每个模板列的Button按钮上。
(3)在GridView的行绑定事件中给每一个模板列的按钮添加确认对话框事件。是这么写的:
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if(e.Row.RowType=DataControlRowType.DataRow)//如果绑定的行是数据控件的数据行
 {
  //如果还要谨慎一些,加上下面得代码:
  if(e.Row.RowState==DataControlRowState.Normal||e.Row.RowState==DataControlRowState.Alternate)
  {
      ((Button)e.Row.Cells[6].FindControl("btnDel")).Attributes.Add("onclick", "javascript:return confirm('你确认要删除该数据么?')");  
  }
    
}
(4)然后,在GridView的行生成事件激发事件中:些下面代码://前提是要在按钮的CommandName上设置属性,用来判断到底是删除还是更新
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
 if(e.CommandName=="Del")
 {
  nt sid =Convert.ToInt32(e.CommandArgument.ToString());
             MessageManager.DelectMessageByID(sid);
              DataTable dt = MessageManager.GetTable();
              SetGridView(dt);//一些方法;
              SetCount();
 }
}

(5)做完这些就OK了。

//—————————————————以前所做总结————————————————————

1.GridView控件的几个可以保存数据的属性:(保存那些有用而又不想显示出来的值)
(1)DatakeyNames
在GridView的属性的DataKeyNames属性中存入值,后台要用的时候,通过代码取出来:
由于DatakeyNames储存的是每列的值,所以在行绑定事件中取出:
protected void GridView1_RowData(object sender,GridViewRowEventArgs e)
{
 string value=this.GridView1.DataKeys[e.Row.RowIndex].value.ToString();//这个用e来确定行数。
}
(2)CommandArgument
这个属性是要绑定在某一个控件上的,当这个控件激发一个事件(如点击事件)时,这个值就可以在事件中通过参数取出来。如:
protected void GriedView1_RowCommand(object sender,GridViewCommandEventArgs e)//e参数就是指触发一个事件的控件中所绑定的值
{
 string id=e.CommandArgument.ToString();
}
(3)笨方法:使用模版列——拖入一个label存放值。 注意这里必须是模版列,否则他的值得不出来。
2.弹出对话框的方法:除了response.write()之外,还有:
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('xxxxxxxxxxxx');</script>");
3.另一个值得注意的地方:当某一列,比如货币列采取了格式化:{0:C}时,它的htmlEncode属性要设置为true;

4.GridView和DataList的保存数据的属性不一样:
GridView是DataKeyNames; 而DataList则是DataKeyField;
但取出来都是一样的。

<script type="text/javascript" id="wumiiRelatedItems"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值