zoukankan      html  css  js  c++  java
  • 获取数据源绑定控件主键

    在我们处理数据绑定控件的时候很多时候需要用到主键,也就是Id,比如删除,修改等操作,只有知道了主键Id才可以知道对那一条记录操作,下面就来看看,在不同的环境中如何获得主键

    1、  当我们触发RowCommand,ItemCommand事件的时候,经常执行的是删除,修改等操作,这个当然是需要主键Id了,在前台可以通过CommandArgument去绑定id,然后再RowCommand,ItemCommand获得id即可:

       <asp:TemplateField HeaderText="删除" ShowHeader="False">

                       <ItemTemplate>

                           <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="false" CommandArgument='<%#eval_r("Id") %>'

                               CommandName="DelNew" Text="删除" OnClientClick="return confirm('确定要删除吗?')"></asp:LinkButton>

                       </ItemTemplate>

                   </asp:TemplateField>

    后台:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

        {

           

            if (e.CommandName == "DelNew")

            {

                int id = Convert.ToInt32(e.CommandArgument);

                NewsManager.Del(id);

                DateBindNews();

            }

            if (e.CommandName == "EditNew")

            {

                int id = Convert.ToInt32(e.CommandArgument);

                Response.Redirect("EditNews.aspx?NewId="+id);

            }

        }

    一般在触发数据源控件的事件中会用到e这个参数获得相关值,e就代表着点击,选择的意思,比如RowCommand和DataBound事件等,可以通过它获得选择的行,或者是选择行里的元素

    2、  如果你把主键Id绑定到了Web控件中,比如HiddenField,那么这个时候我们就可以使用FindControl(“web控件Id”)来获得Id了:

    当我们循环数据绑定控件的项时,可以这样写:

    CheckBox chk = this.GridView1.Rows[i].FindControl("chk") as CheckBox;

    当我们触发DataBound事件时,可以这样写:

    CheckBox chk = e.Row.FindControl("chk") as CheckBox;

    当我们触发DataList或者是Repeater的ItemCommand事件时,可以这样写:

    HiddenField txtClassId = (HiddenField)e.Item.FindControl("txtClassId");

    3、  我们也可以把主键Id绑定到DataKeys中,这个只能在GirlView与DataList中使用,然后再后台中直接读取就可以了‘

           int id =Convert.ToInt32(this.GridView1.DataKeys[i].Value);

            int id =Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value);

    4、  如果Id也没绑定了,我们也可以采用:

    this.GridView2.Rows[e.RowIndex].Cells[2].Text

    5、  在DataBound事件中,我们有可以通过下面的方法获得主键Id

    如果数据绑定控件采用的是DataSet绑定的话,我们可以直接转换获得即:

    DataRowView drw=(DataRowView)e.Item.DataItem;

    如果数据绑定控件采用的是泛型集合绑定的话,我们可以直接转换获得即:

    Model.User drw=( Model.User)e.Item.DataItem;

    然后可以直接获得ID

    Int Id=convert.ToInt32(drw.id)

    int Id = Convert.ToInt32(drw["id "]);

    6、  如果我们是在外部使用内部的选择项的Id,出了循环数据控件,比如

     点击编辑的时候将网站名称和网址传到上面的文本框中,根据主键ID修改即可,那么这个ID该如何获得,那么只从在点击编辑的时候,将主键ID赋给两另外一个控件即可,然后再保存的时候读取该控件的值就可以了,也就是主键ID,这样就可以修改了

    7、  获得ID也可以通过超链接传值

    8、  可以把id绑定到隐藏域中<% eval_r("Id")%>

    获得主键ID的方法很多,灵活使用就可以了

     

    多思考,多创新,才是正道!
  • 相关阅读:
    c# 扩展方法奇思妙用高级篇八:Type类扩展
    Asp.Net 上传大文件专题
    波形捕捉:(2)创建捕捉设备对象
    Capturing Waveforms【译】
    波形捕捉:(1)枚举"捕捉设备"
    C# 调用sql 2000存储过程
    HTTP请求流程(一)流程简介
    Asp.Net 上传大文件专题(4)利用ajax技术显示上传进度
    c# GDI+简单绘图(四)
    波形捕捉:(5)“捕捉缓冲区”信息
  • 原文地址:https://www.cnblogs.com/shuang121/p/1970599.html
Copyright © 2011-2022 走看看