datagrid 操作技巧

一.列的添加和隐藏

1.动态添加列:其实原理很简单,只要知道datagrid中每个元素就是一个类,我们可以把它实例化,然后添加到datagrid中就行了。

string []compre={"A","B","C","D","E"};
    string []comprefiled={"criterion1","criterion2","criterion3", "criterion4","criterion5"};
    for(int i=0;i<evalchoice;i++)
    {
     BoundColumn col = new BoundColumn(); //列
     col.HeaderText= compre[i];  //属性设置      
     col.DataField=comprefiled[i];
     DGridEval.Columns.Add(col); 
}
2.设置属性:找到该行直接设置就行了
dgrd1.Columns[2].Visible=true;  

 

二.datagrid 跳转列绑定多个参数的方法

1.使用模版列+<a href>

<asp:TemplateColumn SortExpression ="_i_resume_id" HeaderText =详情 HeaderStyle-HorizontalAlign="Center"  ItemStyle-HorizontalAlign="Center"  >
<ItemTemplate>
<a   href='resumechoose1.aspx?id=<%#   DataBinder.Eval(Container.DataItem,"id")   %>&_i_position_id=<%#   DataBinder.Eval(Container.DataItem,"_i_position_id")  %>'   target="_blank"> 查看 </a>
</ItemTemplate>
</asp:TemplateColumn>

 

 

<asp:HyperLinkColumn   HeaderText ="" Text="申请调出"    DataNavigateUrlField ="cid"  DataNavigateUrlFormatString="javascript:NavSettingsPage('{0}',form.x_sqpc.value)" HeaderStyle-HorizontalAlign="Center" Target=mainFrame  ItemStyle-HorizontalAlign="Center"/>

 

2.使用模版列+linkbutton

<asp:TemplateColumn HeaderText ="删除"  HeaderStyle-HorizontalAlign="Center"  ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
 <asp:LinkButton ID="x_del" OnClientClick="return confirm('确定要删除吗?');"  OnCommand="DeleteInfo" runat="server" PostBackUrl='<%# "tbmaintain.aspx?type=del&id="+ Eval("id").ToString() %>'>删除</asp:LinkButton>                                                    
</ItemTemplate>
</asp:TemplateColumn>

 

3.没有绑定的情况下,使用Session+<%=%>

<a href="../homepage.aspx?prono=<%=Session["ProNo"]%>">

 

三.GridView 中的各种查找

在RowDataBound 和RowCreated 事件里面 查找

1、当前行中的控件 e.Row.FindControl("TextBox1");

2、当前行              e.Row.RowIndex;

3、当前行的主键值  GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

在RowCommand事件里面 查找

  RowCommand事件是GridView中的按钮触发的事件。只有这三个属性。

   

  e.CommandName;       //判断是哪个按钮。

  e.CommandArgument; //你可以绑定任何你认为有用的值,默认是当前按钮所在的行号
  e.CommandSource;    //数据源

在GridView中的按钮Click事件里面


 ImageButton button = (ImageButton)sender;
 ((GridViewRow)((DataControlFieldCell)button.Parent).Parent).RowIndex;//当前的行数
  GridView1.DataKeys[Row_num].Value.ToString(); //当前行的主键值

  (button.Parent.Parent as GridViewRow).FindControl("TextBox1");或

  gvcgGrid.Rows[Row_num].FindControl("TextBox1");//查找当前行中的其他控件

查找 <FooterTemplate>模板中的控件

GridView1.FooterRow.FindControl("TextBox1") as TextBox

查找 <EmptyDataTemplate>模板中的控件

GridView1.Controls[0].Controls[0].Controls[0].FindControl("TextBox1") as TextBox;

在这里我之列了一些基本的查找,一个非常有意思的属性是Parent你可以根据他查找到你任何想要的东西。

 

四.链接添加提示

1.文本中添加:Text="<div  onclick=&quot;return confirm('确定删除吗?')&quot;>删除</div>"

 

五.gridview模板列和删除标记

1.gridview显示为空,则提示“空!”: 用GridView自身就提供当内容为空时候的模板

<EmptyDataTemplate>

 

2.把标记删除传入id参数 : 先用模板列,在其中的item模板中加入linkbutton,然后在commandname="update",再编辑gridview中的update属性                                               

<asp:LinkButton ID="LinkButton1"  runat="server" PostBackUrl=' <%# "editpu.aspx?puid="+ Eval("articleid").ToString() %>'

gridview+linkbutton做标记删除      

 

六.js实现纵横全选

1.纵向全选
form=document.forms [0];
function vertical_s(o)//纵向全选
{
 
 
 for(var i=1;i<q_grid.rows.length;i++)
 {
  var j=4;
  switch(o)
  {
   case form.x_alla:
   j=4;
   break;
   case form.x_alli:
   j=5;
   break;
   case form.x_allu:
   j=6;
   break;
   case form.x_alld:
   j=7;
   break;
   case form.x_allq:
   j=8;
   break;
   case form.x_allp:
   j=9;
   break;
   default:
   break;
  }
   
   culcell=q_grid.rows[i].cells[j].childNodes[0];
   culcell.checked=o.checked;
   //alert(culcell) 
      
 }
}
2.横向全选:比纵向复杂,必须在datagrid把它的value绑定为点击的标志。
绑定:
<input type =checkbox name="x_horizon"  onclick ="horizontal_s()"  id="x_horizon" value ='<%#   DataBinder.Eval(Container.DataItem,"sn")%>'  >
function horizontal_s()//横向全选
var inputs = document.all.tags("INPUT");
 for (var i=0; i < inputs.length; i++) // 遍历页面上所有的 input
  {
  if (inputs[i].type == "checkbox" && inputs[i].id == "x_horizon" )
   {
     if(inputs[i].checked)
        {
         var v_row=inputs[i].value;
         for(var j=4;j<q_grid.rows[v_row].cells.length-1;j++)
      {
  
  
    culcell=q_grid.rows[v_row].cells[j].childNodes[0];
    culcell.checked=true;//form.x_horizon.checked;
  
   }
        }
        if(!inputs[i].checked)
        {
         var v_row=inputs[i].value;
         for(var j=4;j<q_grid.rows[v_row].cells.length-1;j++)
   {
  
  
    culcell=q_grid.rows[v_row].cells[j].childNodes[0];
    culcell.checked=false;//form.x_horizon.checked;
  
   }
        }
       
       
    }     
  }
 
 
 
}
七.两种绑定方式的区别与用法:
1.<%#Bind("id")%>
直接绑定数据表中的列:用户内嵌的checkbox等控件
Text='<%#Bind("id")%>'
2.<%#   DataBinder.Eval(Container.DataItem,"sn")%>
绑定select出来的列,不一定是数据表中的。如排序用的sn:用于绑定需要有序的标志,当id做不得标志作用时,如要获得datagrid的行号时
Text='<%#   DataBinder.Eval(Container.DataItem,"sn")%>'
八.dategrid状态控制
function gridstate()
{
 for(var i=1;i<q_dbgrid0.rows.length;i++)
 {
  
  curcell=q_dbgrid0.rows[i].cells[6];
  funcell=q_dbgrid0.rows[i].cells[7];
  
   
  if(curcell.innerText=="已调出")
  {
   funcell.innerText="";
  }
 }
}

你可能感兴趣的:(JavaScript,J#,asp)