GridView 使用DataKeyNames属性

摘要:
今天,我使用GridView控件向控件中添加一个模板列,然后放置一个image按钮。当我单击该按钮时,我进入编辑页面。当然,可以加载数据。在这里,我还说编辑。我的编辑是详细信息视图。我向控件中添加一个更新列,然后将visible设置为false。当我加载页面时,它被设置为编辑状态,代码如下:this.DetailsView1.ChangeMode(详细信息

     今天在做项目的时候用到了 GridView控件 在这个控件里添加了一个模板列,然后放了个imagebuttion,点击按钮的时候进入编辑页面,当然数据可定要加载出来的,

这里也说一下编辑,我用的编辑是detailsview,我在这个控件里添加了更新列,然后设置visible=false,当加载这个页面的时候设置为编辑状态,代码如下:

 this.DetailsView1.ChangeMode(DetailsViewMode.Edit);更新就有点麻烦了,我是自己添加了个按钮,我不知道如何调用更新,最后只能用笨办法了,

一个一个的取出每一列,然后调用自定义更新方法。

     好了,说了这么多,进正题吧,在asp.net2.0中,当我们需要在GridView的ItemDataBound之类的事件中需要获取当前行的一些关联性的数据值,

但这些数据值又不能直接体现在GridView的列中显示出来,这时我们可以采用DataKeyNames的方式来获取此类数据,我们可以设置GridView的DataKeyNames属性,

代码写也一样,看一下基本语法:

DataKeyNames='FID'   绑定一个值
GridView1.DataKeys[e.Row.RowIndex].Value.ToString;

DataKeyNames='FID,FName'   绑定两个值
GridView1.DataKeys[e.Row.RowIndex].Values[0].ToString;
GridView1.DataKeys[e.Row.RowIndex].Values[1].ToString;


 

1. 按钮获取

protectedvoid Copy_Click(object sender, EventArgs e)
    {
        
int index=((GridViewRow)(((Button)sender).Parent.Parent)).RowIndex;

         String value
= GridView1.DataKeys[index]["Name"].ToString(); 

    }

解释: 一层一层往上找。通过现在的button找到他所在的cell,然后再调用parent,就找他所在的行,然后取rowindex

2. 行命令触发

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        // 获取当前行索引
        int index = Convert.ToInt32(e.CommandArgument);

        // 取出当前行数据键值对象中的值
        string strGrup = ((GridView)sender).DataKeys[index].Values["Grup"].ToString(); 
    }

3. 如果你使用模板列中放置按钮控件的方式,要想在按钮事件中获取这种字段值就更简单了。

只需要在按钮的CommandArgument属性设置为想绑定的字段,如:

<asp:TemplateField>
     <ItemTemplate>
         <asp:Button runat="server" OnClick="Button2_Click" Text="Button" CommandArgument=' <%#Eval("Grup") %>' />
     </ItemTemplate>
</asp:TemplateField>

按钮事件中如是写:

protected void Button2_Click(object sender, EventArgs e)
{
    string strGrup = ((Button)sender).CommandArgument.ToString();
}

总结:找了3个列子,估计大家肯定也都对DataKeyNames属性有一定的了解了,有什么问题请大家指出,我随时关注

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

上篇Qtree V【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)下篇

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

相关文章

024. asp.net中第一次使用GridView (设置鼠标经过时更换背景色)

1. 前端HTML代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht...

DevExpress GridView 整理(转)

DevExpress GridView 那些事儿 1:去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Designer -> 找到:OptionView ->将 ShowGroupPanel : 设置为 false ; 2:如何...

GridView ObjectDataSource 一些使用说明

1. GridView 在使用ObjectDataSource做数据源后,如果要启用删除,需要指定 GridView 的DataKeyNames 属性,只有设置了DataKeyNames='xxx'后 GridView在执行删除操作时会调用一个包含名为 xxx 参数的 Delete操作, 当然这个时候你必须设置ObjectDataSource 的OldVa...

在asp.net webform中的 gridview 里面的一些基本操作

<body> <form runat="server"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td> <asp:Panel runat="server" CssClass="buttonContainer" Wr...

富数据控件 GridView(模版)

       如果希望在同一个单元格中显示多个值,或者希望在单元格中添加 HTML 标签和服务器控件而获得自定义内容的不受限的能力,就需要使用 TemplateField。        TemplateField 允许你为每一列定义一个完全定制的模版。你可以加入控件标签、HTML 元素、数据绑定表达式,可以完全按照你的方式布置一切! <asp:S...

Android中动态设置GridView的列数、列宽和行高

 在使用GridView时我们知道,列数是可以通过设计时的属性来设置的,列的宽度则是根据列数和GridView的宽度计算出来的。但是有些时候我们想实现列数是动态改变的效果,即列的宽度保持某个值,列的数量是可变的,我们可通过获取屏幕宽度并除以项目宽度来处理。请看下面的代码: @Override protected void onCreate(Bun...