datakeynames的设定和取值

转载 2007年09月30日 09:45:00

DataKeyNames就是数据库表的字段,可以设置多个。
<asp:GridView ID="gvGoods" runat="server" AutoGenerateColumns="False" Width="550px" AllowPaging="True" DataKeyNames="s_goodsID,s_goodsName" OnPageIndexChanging="gvGoods_PageIndexChanging" OnRowDataBound="gvGoods_RowDataBound" OnRowCommand="gvGoods_RowCommand">

使用 DataKeyNames 属性指定表示数据源主键的字段。

注意
若要以声明方式设置此属性,请使用以逗号分隔的字段名列表。


当设置了 DataKeyNames 属性时,GridView 控件用来自指定字段的值填充它的 DataKeys 集合,这提供了一种访问每个行的主键的便捷方法。

注意
GridView 控件以控件状态存储这些键字段值。如果这些值包含敏感信息,则强烈建议您通过将 ViewStateEncryptionMode 属性设置为 ViewStateEncryptionMode.Always 来启用视图状态加密。


在使用自动生成的字段列时(通过将 AutoGenerateColumns 属性设置为 true),GridView 控件自动确保与 DataKeyNames 属性中指定的字段相对应的自动生成字段列是只读的。

注意
为了使 GridView 控件的自动更新和删除功能工作,必须设置 DataKeyNames 属性。为了匹配要更新或删除的行,这些键字段的值被传递到数据源控件。


如果将某个列字段的 Visible 属性设置为 false,则在 GridView 控件中将不显示该列,该列中的数据也不会往返于客户端。如果希望某个不可见的列中的数据可以进行往返,则向 DataKeyNames 属性添加相应的字段名称。

一个删除的例子:
注意:DataKeyField=的用法


=====页面=====

<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False" DataKeyField="DoubleKey">
                <Columns>
                    <asp:BoundColumn DataField="item" HeaderText="item"></asp:BoundColumn>
                    <asp:ButtonColumn CommandName="del" Text="删除"></asp:ButtonColumn>
                </Columns>
            </asp:DataGrid>

====绑定========

private void SetBind()
        {
            SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
            SqlDataAdapter da=new SqlDataAdapter("select * from doublekey",conn);
            DataSet ds=new DataSet();
            da.Fill(ds);
            DataTable dt=ds.Tables[0];
            DataColumn dc=new DataColumn("DoubleKey",typeof(string),"key1+'#'+key2");
            dt.Columns.Add(dc);
            this.DataGrid1.DataSource=dt;
            this.DataGrid1.DataBind();
        }



=====删除====

private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            if(e.CommandName=="del")
            {
                SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); 
                SqlCommand comm=new SqlCommand("delete from doublekey where key1=@key1 and key2=@key2",conn); 
                SqlParameter parm1=new SqlParameter("@key1",SqlDbType.Int);
                SqlParameter parm2=new SqlParameter("@key2",SqlDbType.Int); 
                string [] keys=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString().Split('#');
                parm1.Value=keys[0];
                parm2.Value=keys[1];
                comm.Parameters.Add(parm1);
                comm.Parameters.Add(parm2); 
                conn.Open(); 
                comm.ExecuteNonQuery(); 
                conn.Close(); 
                SetBind(); 
            }
        } 

 

GridView中使用DataKeyNames存储数据键值

很多时候我们需要在GridView的RowCommand之类的事件中需要获取当前行的一些关联性的数据值。但这些数据值又没有直接体现在GridView的列中。这个时候该怎么办呢?有同学喜欢用隐藏列的方式...

GridView控件当前行索引RowCommand和主键DataKeyNames应用

在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作。例如,可以获得当前行某一个控件元素;设置某一元素的值等等。 下面结合实例介绍几种获得GridView当前行索引值...

GridView.DataKeyNames 属性

以下内容来自MSDN 注意:此属性在 .NET Framework 2.0 版中是新增的。 获取或设置一个数组,该数组包含了显示在 GridView 控件中的项的主键字段的名称。 ...

datakeynames

datakeynames 其sdk中的描述如下: datakeynames:获取或设置一个数组,该数组包含了显示在 gridview 控件中的项的主键字段的名称。  datakeys:获取一个 dat...

GridView的DataKeyNames的一些用法

页面前台有以下代码: 后台有以下代码: protected void View1_RowDataBound(object sender,GridViewRowEventArgs e...

【转载】jQuery EasyUI DataGrid Checkbox 数据设定与取值

最近在做一个小项目,用到的是一个我以前没有接触过的东东 有关 jQuery EasyUI DataGrid 的相关资料,可以前往官网查看, jQuery EasyUI 官网 jQ...

jQuery EasyUI DataGrid Checkbox 数据设定与取值

纯粹做个记录,以免日后忘记该怎么设定。 这一篇将会说明两种使用 jQuery EasyUI DataGrid 的 Checkbox 设定方式,以及在既有数据下将 checked 为 true 的...
  • siqilou
  • siqilou
  • 2014年10月17日 11:07
  • 470

颜色取值软件

  • 2017年11月22日 19:20
  • 486KB
  • 下载

【C#】 数组排序和取值练习

数组排序和取值: 1.从键盘接收一行用逗号分隔的5个整数,保存至有5个元素的数组中。 2.分别输出正序和逆序的结果。 3/输出数组最大值和平均值,平均值保留1位小数。 4.存在非法输入时显示提示消息并...
  • Ya_da
  • Ya_da
  • 2016年03月16日 23:14
  • 1092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:datakeynames的设定和取值
举报原因:
原因补充:

(最多只允许输入30个字)