zoukankan      html  css  js  c++  java
  • GridView的DataKeyNames属性 转载的

    偶今天用到这个了,转载  "事在人为"楼主的,原文地址: http://www.cnblogs.com/andhm/archive/2010/05/07/1730024.html

    DataKeyNames表示主键的列名,可以通过GridViewEntity.DataKeys[RowIndex]["ColumsName"]来获取他的值,当然它是不会显示出来的,其实我是在一个用SqlDataSource中发现的,看到了有这么一个主键而实现更新,当然在我们多层开发中也不能缺少这个。当我们在用Template时怎么取得值呢?我们可以把那个列也设为DataKeyNames中,记得多个要用","隔开。
    如果没有设置成DataKeyNames,那只能通过GridViewEntity.Rows[RowIndex].Cell[Index].Text来得到值了,不知老兄有没有看到一些HTML字符呢? 这个最是经常见得了,不用当心我们可以用HttpUnility.HtmlDecode()来解决他!

    在我们使用GridView的过程中,经常会遇到这样对问题,我们选择某一行进行编辑,或选择某一行删除或者.......时,我们需要获取当前行的某些信息,尤其是当前行的主键信息,主键信息一般不显示在页面,此时我们有三种方法来处理。 第一种是使用DataKeyNames ,这里要重点介绍的。 第二种是使用按钮的CommandArgument属性邦定需要的信息。 第三种是最古老最通用的方法使用隐藏的方法显示。

    第一种方法:使用DataKeyNames,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(); 或者 后台:GridView1.DataKeys[e.Row.RowIndex].Values["FID"].ToString(); 后台:GridView1.DataKeys[e.Row.RowIndex].Values["FName"].ToString();

    第二种方法:是用按钮的CommandArgument属性邦定需要的信息。

    典型的例子:下载附件列(有附件的显示下载链接,无附件的显示为空) <asp:TemplateColumn HeaderText="附件"> <HeaderStyle Width="7%"></HeaderStyle> <ItemTemplate> <asp:LinkButton id="LinkButton1" CommandName="download" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "attached_file")%>' runat="server" Visible='<%# ((DataBinder.Eval(Container.DataItem, "attached_file").ToString()) != "") %>'>下载</asp:LinkButton> </ItemTemplate> </asp:TemplateColumn>

    在dgHKStock_ItemCommand事件中: if ("download" == e.CommandName) {     mybc.SystemOverTime0();          // 判断Session是否过期     mybc.RightManage("16010500");    // 判断用户是否有打开此网页的权限     mybc.HTTP_DownloadFile(e.CommandArgument.ToString()); // 取得当前存货信息的附件存放路径

    }

    最古老最通用的方法使用隐藏的方法显示。

    <style type="text/css">     .test{         display:none;     }     </style>

    <asp:TemplateField HeaderText="姓名" SortExpression="name" ItemStyle-CssClass="test" HeaderStyle-CssClass="test"> <ItemTemplate>     <asp:Label ID="Label1" runat="server" Text='<%# Eval("name") %>' ></asp:Label>     </ItemTemplate>    </asp:TemplateField>

    把隐藏列转成模版列,通过FindControl访问模版列的内容:

    <asp:TemplateField Visible="false">                 <ItemTemplate>                 <asp:Label runat="server" Text='<%#Eval("id") %>' ID="lblId"></asp:Label>                 </ItemTemplate> </asp:TemplateField>

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)     {         Label lblId=GridView1.Rows[e.NewEditIndex].Cells[0].FindControl("lblId") as Label;         Response.Write(lblId.Text);     }

  • 相关阅读:
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车按键启动和蜂鸣器报警
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车前后左右综合实验
    asp中设置session过期时间方法总结
    asp中设置session过期时间方法总结
    ASP.NET关于Session_End触发与否的问题
  • 原文地址:https://www.cnblogs.com/ry123/p/2547882.html
Copyright © 2011-2022 走看看