20100806 学习记录:gridview中添加链接


在gridview里面加一列链接,点击可以弹出窗口,并在里面进行修改。

找了一下主要是两个方法,一个是我原计划的linkbutton,另外还一个专门的HyperLinkField 。ImageButton 就不想用了....  - =

 

关于 linkbuttonHyperLinkField 到底有什么区别,暂时还没搞清楚。。。  - =

查了一下用法: 

ExpandedBlockStart.gif 代码
// HyperLink 
// 嗯,findcontrol去找页面上的数据
  if  (e.Row.RowType  ==  DataControlRowType.DataRow)
            {
                HyperLink hy 
=  e.Row.Cells[ 4 ].FindControl( " hyQuery " as  HyperLink;
                Label lbNumber 
=  e.Row.Cells[ 0 ].FindControl( " lbNumber " as  Label;
                Label lbCreateTime 
=  e.Row.Cells[ 1 ].FindControl( " lbCreateTime " as  Label;
                Label lbDesc 
=  e.Row.Cells[ 2 ].FindControl( " lbDesc " as  Label;
                Label lbEmployees 
=  e.Row.Cells[ 3 ].FindControl( " lbEmployees " as  Label;
                hy.NavigateUrl 
=   " ../Invoices/QueryInventoryInvoices.aspx?number= "   +  lbNumber.Text  +   " &createtime= "   +  lbCreateTime.Text  +   " &desc= "   +  lbDesc.Text  +   " &employees= "   +  lbEmployees.Text;
            }
// 也可以在这里直接引用数据源,支持多个
< asp:HyperLinkField DataNavigateUrlFields = " id,name "  DataNavigateUrlFormatString = " Default2.aspx?id={0}&amp;name={1} "  HeaderText = " 操作 "  Text = " 修改 "   />     
 

// linkbutton
// 前台模板列,放入LinkButton
// 可用通过CommandArgument来给LinkButton绑定数据源
   < asp:TemplateField HeaderText = " 查看/修改 " >
                    
< ItemTemplate >
/////////// Text='<%# DataBinder.Eval(Container.DataItem,"recordid") %>'
                        
< asp:LinkButton ID = " LinkButton1 "  runat = " server "  CommandArgument = ' <%# Eval("que_tpye") %> '  CommandName = " GetInfo " > 详细信息 </ asp:LinkButton >
                    
</ ItemTemplate >
                
</ asp:TemplateField >

// 后台 GridView行命令事件 
  protected   void  GridView1_RowCommand( object  sender, GridViewCommandEventArgs e)
    {
        
if  (e.CommandName  =   " GetInfo " )
        {
            Response.Redirect(
" xxx.aspx?id= "   +  Convert.ToInt32(e.CommandArgument));

         //获取被点击的linkButton所在的GridViewRow
         GridViewRow gvrow = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
            int index = gvrow.RowIndex; //获取到行索引 RowIndex
            
            //获取当前行的某列值
            string userid=GridView1.Rows[index].Cells[列索引].Text.Trim();
            ......
        }
    }
 


 

 HyperLinkField

 

在【可用字段】里选择HyperLinkField,单击【添加】按钮。
然后选择在【选定的字段】中,选择刚添加的这个HyperLinkField
在右边按照图示进行设置:
外观-Text:设置链接的文字。
外观-HeaderText:设置链接列的标题。
数据-DataNavigateUrlFields:设置超链接要传递的参数,这里写的“id,name”表示要传递idname这两个字段的值,注意用逗号分隔,可以设置多个字段。
数据-DataNavigateUrlFormatString:设置要链接到的页面和传递的参数。Default2.aspx?id={0}&name={1}表示要链接到Default2.aspx页面。这里的{0}表示在形成链接时{0}将会被DataNavigateUrlFields中设置的第一个参数实际的值替代,在我们这里是id{1}将会被name的实际值替代。

最终形成的页面代码如下:

<asp:GridView ID="cityList" runat="server" AutoGenerateColumns="False">    <Columns>        <asp:BoundField DataField="id" HeaderText="编码" />        <asp:BoundField DataField="name" HeaderText="名称" />        <asp:HyperLinkField DataNavigateUrlFields="id,name" DataNavigateUrlFormatString="Default2.aspx?id={0}&amp;name={1}" HeaderText="操作" Text="修改" />    </Columns></asp:GridView>

 

 http://wenwen.soso.com/z/q188125953.htm?ri=1466&rq=191624508&uid=0&ch=w.xg.llyjj

 


  RowCommand 当单击 GridView 控件中的按钮时发生。   
  RowDataBound 在 GridView 控件中将数据行绑定到数据时发生。

  觉得有点搞不清  RowCommand 和 RowDataBound了... 囧

我知道这俩发生的时机不同,不过在不同时候做的类似的操作效果相同么??疑问。最近没时间,有空的时候要试一下做个比较

 

 

 

 

 

转载于:https://www.cnblogs.com/neru/archive/2010/08/07/1794584.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值