zoukankan      html  css  js  c++  java
  • GridView 使用DataKeyNames属性

         今天在做项目的时候用到了 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. 按钮获取

    protected void 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 ID="Button2" 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属性有一定的了解了,有什么问题请大家指出,我随时关注

  • 相关阅读:
    nginx:安装成windows服务
    org.aspectj.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18
    数据库中间件
    架构策略
    谈判
    设计模式 总结 常用10种
    08 状态模式 state
    07 策略模式 strategy
    06 命令模式(不用)
    05 观察者模式 Observer
  • 原文地址:https://www.cnblogs.com/myssh/p/1395824.html
Copyright © 2011-2022 走看看