您的位置:首页 > 其它

获取数据源绑定控件主键

2011-03-04 10:16 169 查看
在我们处理数据绑定控件的时候很多时候需要用到主键,也就是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的方法很多,灵活使用就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: