C#学习笔记(三)---------Repeater的一些常规用法

来源:互联网 发布:打字赚钱软件推荐 编辑:程序博客网 时间:2024/05/20 01:13
Repeater和Gridview前台显示行号的方法
Repeater:<%# Container.ItemIndex %> <%# ((DataRowView)Container.DataItem)["XXXXXX"] %>
GridView:<%# Container.DateItemIndex%>


 

获取子控件进行编程处理
 
 获取子控件有两种方法可用:

 1,将Container作为参数传到后台函数中。

 例如:<ItemTemplate><%#m_checkbox = (CheckBox)GetCheckBox(Container)%></ItemTemplate>
 public CheckBox GetCheckBox(Control container)
 {
  return (CheckBox)container.FindControl("DontrolID");
 }
 
 2,利用postback事件---ItemCommand来实现
 protected void Repeater1_ItemCommand(object source,RepeaterCommandEventArgs e)
 {
  if(e.CommandName=="checkbox")//如果未指定CommandName属性则也可以用CommandSourc.Text属性。
  CheckBox a = (CheckBox)e.Item.FindControl("ControlID");
  //处理a控件。
 }
 
 
动态定制实现样式呈现
 
在生成HTML的函数中可以使用DataBinder.GetPropertyValue(Container.DataItem,"XXX");来得到指定数据对象(即该Container.DataItem)的指定属性的值。但前提是该属性需要申明为public并且至少有get访问器。否则将不起作用(例如该属性实现为一个字段)。举例:
<ItemTemplate><%# GetStyleForItem(Container)%></ItemTemplate>public string GetStyleForItem(Control dataObj)//public 是必须的{ string value = DataBinder.GetPropertyValue(dataObj.DataItem,"XXX");}

 
Repeater中时间显示格式的更改和变换
 
<%# DataBinder.Eval(Container.DataItem, "date").ToString().Substring (0,4) +"年"+DataBinder.Eval(Container.DataItem, "date").ToString().Substring (4,2) +"月"+DataBinder.Eval(Container.DataItem, "date").ToString().Substring (7,2) +"日"+DataBinder.Eval(Container.DataItem, "date").ToString().Substring (10,8)%>
 
 
Repeater中使用HtmlCode解码
<%# Server.HtmlDecode(DataBinder.Eval(Container.DataItem, "idea").ToString()) %>
 

Repeater中分页绑定时使用
//使用适配器//startRecord起始位置//maxRecord最大记录数,也就是每页条数string cmdText = "SQL语句"OracleConnection conn = new OracleConnection(connectionString);conn.Open();OracleCommand cmd = new OracleCommand();cmd.Connection = conn;cmd.CommandText = cmdText;cmd.CommandType = CommandType.Text;OracleDataAdapter dat = new OracleDataAdatper(cmd);DataTable dt = new DataTable();dat.Fill(startRecord, maxRecord, dt);repeaterData.DataSource = dt;repeaterData.DataBind();

 

Repeater中的CheckBox选取使用js技术

function CheckAll(obj){    var id = obj.id;    if(id == "allCheck"){        if(obj.checked){            SelectAllCheckBox(true);        }else{            SelectAllCheckBox(false);        }    }else{         if(obj.checked == false){                document.all("allCheck").checked = false;            }else{             var flag = IsAllChecked();                  if(flag){                    // 全选框被选中                 document.all("allCheck").checked = true;                 }            }        }    }
    function SelectAllCheckBox(checked)    {        // 数据条数隐藏变量          var lenObj = document.all("DataCount");        var len = parseInt(lenObj.value,10);        for (var i = 0; i < len; i++)        {            var tempId = i;            // 小于10时,前面加"0"补齐               if(i < 10)            {                tempId = "0" + i;            }            // 取得复选框               var checkBox = document.all("repeaterData_ctl" + tempId + "_checkBox");            if (checkBox!=null && checkBox.type == "checkbox" )             {                // 设定状态                 checkBox.checked = checked;            }        }    }    function IsAllChecked()    {        var flag = true;        // 数据条数隐藏变量          var lenObj = document.all("DataCount");        var len = parseInt(lenObj.value,10);        for (var i = 0; i < len; i++)        {            var tempId = i;            if(i < 10)            {                tempId = "0" + i;            }            var checkBox = document.all("repeaterData_ctl" + tempId + "_checkBox");            if (checkBox!=null && checkBox.type == "checkbox" )             {                // 如果没被选中                 if(checkBox.checked == false)              {                  flag = false;              }            }        }        return flag;    }

在使用Repeater时,注意使用JS取repeater中控件时要使用repeater给控件生成的ID ,控件本身ID不可用,一般是查询不到的。而在使用GridView时,选择其中控件的方法可以直接使用查找控件ID,但是GridView在数据控件中属于最简单操作的一种,但是针对一它的可用性也是最差的,它在使用的时候使用较多的ViewState记录大量数据,如果想要效果和速度,那么关闭ViewState,但是这样就不能使用GridView中的分页、编辑、删除操作。