DataGrid控件用法

摘要:
DocTitle=>添加单击事件并转换LinKbutton的选定背景色。在DataGrid中绑定javascript事件以实现删除提示并转换背景色privatenoidg_Search_ItemDataBound{if/*判断它是正常项还是备用项*/{e.Item.Attributes.Add;/*向正常项目添加onmouseover事件*/e.Item.Aattributes.AAdd;/*将onmouseout事件添加到正常项目*//*以上两行更改背景颜色*/.Attribute.Add(“onClick”,“returnconfirm('您确定要删除吗?')”);/*在删除前向删除按钮添加单击事件以提示*/}已发布------------------------------------------------------------------------------在DataGrid中创建一个模板列,在模板列中放置一个客户端按钮,或者直接写下所需的单词,然后使用连接示例:详细信息然后编写一个javascript方法functionLoadFreedom//id是传递的参数{varurl='url.aspx?

实现模版列有超连接外观,一点实现打开或者下载的功能。

<ItemTemplate>
<a href='http://t.zoukankan.com/download.aspx?DocTitle=<%# DataBinder.Eval(Container.DataItem,"DocTitle") %>'>
 <%# DataBinder.Eval(Container.DataItem,"DocTitle") %>
</a>
</ItemTemplate>

为LinKbutton添加单击事件和变换所选项背景颜色

DataGrid中绑定javascript事件,实现删除提示和变换背景色
private void dgSearch_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
 if(e.Item.ItemType==ListItemType.Item ||e.Item.ItemType==ListItemType.AlternatingItem)
        /*判断是否为正常项和交替项*/
 {
  e.Item.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#bfdcff'");
                /*给正常项(即每一列)添加onmouseover事件*/
  e.Item.Attributes.Add("onmouseout","this.style.backgroundColor=c");
                /*给正常项(即每一列)添加onmouseout事件*/
  /*以上两行实现变换背景色*/
  ((LinkButton)e.Item.FindControl("lbtnDel")).Attributes.Add("onClick","return confirm('确定要删除吗?')");
  /*给删除按钮添加单击事件,实现删除前提示*/
 }
}
posted


--------------------------------------------------------------------------------
 
 
在DataGrid中建一个模板列,在模板列中放一个客户端的Button,或者直接写你要的字句,然后用<a href>连接
例:
<TABLE cellSpacing="0" cellPadding="0" border="0">
    <TR>
     <TD width="100%">
      <asp:datagrid runat="server" GridLines="Horizontal" AllowCustomPaging="True"
       AllowPaging="True" AutoGenerateColumns="False" DataKeyField="id" BorderColor="White" BorderWidth="1px"
       PageSize="20">
       <ItemStyle BackColor="#F7F7F7"></ItemStyle>
       <HeaderStyle Font-Bold="True" HorizontalAlign="Center" BackColor="#E8E8E8"></HeaderStyle>
       <Columns>
        <asp:TemplateColumn>
         <ItemTemplate>
          <A href='javascript:onclick=LoadFreight(<%# DataBinder.Eval(Container,"DataItem.id")%>)'>
           详细信息</A>
         </ItemTemplate>
        </asp:TemplateColumn>
       </Columns>
      </asp:datagrid>
     </TD>
    </TR>
然后写一个JavaScript方法
<script language="javascript">
function LoadFreight(id)//id为传进的参数
{
 var url='url.aspx?tid='+id+'';
 window.open(url,'','scrollbars=yes,top=0,left=0,resizable=no,status=no,toolbar=no,menubar=no,location=no,width=430,height=600');
}
</script> 
 
 
-------------------------------------------------------------------------

 DataGrid中使用Button操作
首先在Datagrid里设置OnItemCommand事件,指向处理函数,然后在模板列加button,设置button的CommandName属性,在后台根据CommandName来判断点击了那个button,并进行处理。
 

  <asp:DataGrid runat="server" OnItemCommand="itemComm">
    <Columns>
     <asp:TemplateColumn HeaderText="比较1">
      <ItemTemplate>
       <asp:Label id=Button2 runat="server">
        <%# DataBinder.Eval(Container.DataItem,"id")+@"/"+ DataBinder.Eval(Container.DataItem,"project")%>
       </asp:Label>
      </ItemTemplate>
     </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="比较2">
     <ItemTemplate>
      <asp:Button ID=btn1 Runat=server CommandName="test1" Text=<%# DataBinder.Eval(Container.DataItem,"id")%>>
      </asp:Button>
     </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="比较3">
     <ItemTemplate>
      <asp:Button Runat=server CommandName="test2" Text=<%# DataBinder.Eval(Container.DataItem,"id")%>>
      </asp:Button>
     </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
   </asp:DataGrid>


后台的函数:

public void itemComm(object sender,DataGridCommandEventArgs e)
  {
   switch(Convert.ToString(((Button)e.CommandSource).CommandName))
   {
    case "test1":
     this.button1.Text=e.Item.ItemIndex.ToString();
     break;
    case "test2":
     this.button1.Text=e.Item.ID.ToString();
     break;
   }
  }
-----------------------------------------------------------------------------------------------------------

有很多网友遇到这样的问题:在DataGrid模板列中的按钮可以触发ItemCommand事件但是怎么触发其他事件?(比如放置DropDownList怎么触发SelectedIndexChange事件?……)
按照http://blog.csdn.net/LoveCherry/archive/2005/03/24/328455.aspx我们进行一下修改:
在模板列中增加一个DropDownList

<asp:TemplateColumn HeaderText="学院">
      <ItemTemplate>
       <asp:DropDownList Runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged"></asp:DropDownList>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:DropDownList Runat="server"></asp:DropDownList>
      </EditItemTemplate>
</asp:TemplateColumn>

在前台直接加上事件DropDownList2_SelectedIndexChanged

然后在后台添加事件就可以了

protected void DropDownList2_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   Response.Write(((DropDownList)sender).SelectedItem);
  }

注意,事件不能是private的,这里的sender就是这个下拉框,类型转换一下就能使用了

--------------------------------------------------------------------------------------------------------------------

页面一的代码,再点击“下载”事件里面写  
  string   SavePath   =   Convert.ToString(db.yourpath);  
  if(!File.Exists(SavePath))   return;  
  string   Url   =   Request.ApplicationPath;  
  Url   +=   "/youDir/FileDownload.aspx?path=";  
  Url   +=   HttpUtility.UrlEncode(SavePath)+"&&type="+Convert.ToString(db.yourFileType);  
  this.Server.Transfer(Url);  
   
  这就是你那样的存储方式了。首先取得你的源文件所在的地方然后检查这个路径是否存在,如果存在的话就让一个干净的网页来下载你的文件。  
  页面二代码:在pageLoad事件里面写  
  string   filePath   =   Request.QueryString["path"];  
  string   fileType   =   Request.QueryString["type"];  
  string   fileName   =   Path.GetFileName(filePath);  
  FileStream   fs   =   File.OpenRead(filePath);  
  this.Response.ContentType   =   fileType;  
  Response.AddHeader("Content-Disposition:",   "attachment;   filename="   +   HttpUtility.UrlEncode(fileName));    
   
  int   count     =   0;  
  int   length   =   (int)fs.Length;  
  byte[]   buf   =   null;  
  fs.Position   =   0;  
  while(count   <length-1)  
  {  
  if(length   -   count-1   >=100)  
  {  
  buf   =   new   byte[100];  
  }  
  else  
  {  
  buf   =   new   byte[length   -   count-1];  
  }  
  count   +=   buf.Length;  
  fs.Read(buf,0,buf.Length);  
  this.Response.BinaryWrite(buf);  
  //offset   =   (int)fs.Position+1;  
  }  
  fs.Close();  
  //br.Close();  
  this.Response.Flush();  
   
  这样的好处是用户没有办法知道你的路径是什么,因为是你在服务器端从数据库中写的,而且传输到客户端的。记得要加上System.IO的引用

记得页面二里面除了Page指令之外的所有标记都要删除干净,否则你的txt文件就无法得到正确的内容,其他文件没有问题。这也是为什么一定要让下载文件放到页面二的原因。

不需要使用模板列,使用普通的命令按钮列就可以了!  
  private   void   Dtg_FileList_ItemCommand(object   source,   System.Web.UI.WebControls.DataGridCommandEventArgs   e)  
  {  
  if(e.CommandName   ==   "Download")  
  {  
  string   wdbh   =   e.Item.Cells[0].Text;  
  //通过wdbh获取db,然后  
  string   SavePath   =   Convert.ToString(db.yourpath);  
  if(!File.Exists(SavePath))   return;  
  string   Url   =   Request.ApplicationPath;  
  Url   +=   "/youDir/FileDownload.aspx?path=";  
  Url   +=   HttpUtility.UrlEncode(SavePath)+"&&type="+Convert.ToString(db.yourFileType);  
  this.Server.Transfer(Url);  
  }  
  }


DataGrid中实现点击删除按钮出现“确定删除吗”提示框???

private   void   dgrd_zs_ItemDataBound_1(object   sender,   System.Web.UI.WebControls.DataGridItemEventArgs   e)  
  {  
  foreach(Control   con   in   e.Item.Cells[6].Controls)  
  {  
  if(con.ToString()=="System.Web.UI.WebControls.DataGridLinkButton")  
  {  
  System.Web.UI.WebControls.LinkButton   lbtn=(System.Web.UI.WebControls.LinkButton)con;  
  lbtn.Attributes.Add("onclick",   "return   confirm('您确定删除该条记录吗?')");  
  }  
  }  
  }

免责声明:文章转载自《DataGrid控件用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇TCP的核心系列 — SACK和DSACK的实现(三)网络渗透资料大全单——漏洞库篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinForm GDI+自定义控件总结(一)

前言   由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发。自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉win32Api和GDI+。下面是我收集的一些资料,挺不错的。 资料 .NET组件编程http://www.cnblogs.com/mapserver/ca...

C# 基本数据类型

Ø  前言 每个编程语言都有基本的数据类型,例如 C、C++、Java、Python、PHP、JavaScript、以及各种数据库等,而 C# 也不例外。本篇主要讨论 C# 中的一些常用的基础数据类型。   1.   值类型 Ø  值类型隐式继承于 System.ValueType,而 System.ValueType 隐式继承于 System.Objec...

GUI的最终选择 Tkinter(九):事件

Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引起的)。 Tkinter提供了一个强大的机制,可以让你自由的去处理事件,对于每个组件来说。可以通过bond()方法将函数或者方法绑定到具体的事件上。当触发器的...

Spring MVC与JAXRS比较与分析

http://www.infoq.com/cn/articles/springmvc_jsx-rs 过去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念。如果你还不了解REST,那这个简短的介绍将有助你快速掌握REST,此外还可以点击这里了解关于REST的更多信息。 现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开...

java通过jdbc连接数据库并更新数据(包括java.util.Date类型数据的更新)

一、步骤 1.获取Date实例,并通过getTime()方法获得毫秒数; 2.将获取的毫秒数存储到数据库中,注意存储类型为nvarchar(20); 3.读取数据库的毫秒数,作为Date构造方法的参数创建实例,有需要再转换时间格式。 二、代码示例 packagecom.yh.dao; importjava.sql.Connection; importja...

C++中使用Json的方法

使用 C++ 处理 JSON 数据交换格式   一、摘要     JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON官方的解释为:JSON 是一种轻量级的传输数据格式。 本文并不具体介绍 JSON 本身的细节,旨在讨论怎样使用 C++ 语言来处理 JSON。关于...