获取数据源绑定控件主键
2011-10-05 18:13
197 查看
在我们处理数据绑定控件的时候很多时候需要用到主键,也就是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的方法很多,灵活使用就可以了
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# 将Dictionary,StringDictionary等集合数据绑定到如comboBox等控件数据源中将获取健值
- C# 数据绑定 控件信息的获取
- 获取DataGridView绑定BindingSource的数据表,并根据树控件点击进行筛选数据表,下拉控件自定义排序问题初步解决方法,解决了该行属于另一个表的错误提示.
- .NET 使用GridView控件绑定数据源其他操作(查询相关数据,而不是显示全数据)
- 获取ContextMenuStrip绑定的控件源
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- DataSet&DataTable如何绑定下拉列表控件获取不重复的值,如何添加一列自定义文字,并在下拉列表控件中显示自定义文字[winform学习实例]
- CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本
- repeater绑定时获取HTML形式的控件
- 获取DataList控件的主键和索引
- 可空与可绑定数据源的日期编辑选择控件 TDateEditPicker
- asp.net中ListView控件动态绑定数据源后,使用DataPager出现错误的原因及解决办法
- Listview控件获取当前行的行号和主键
- 获取被绑定控件的表名
- 一个数据源赋给多个COMBOX控件绑定,改变一个COMBOX值时其它几个也跟着改变(已有解决方案)
- .NET中TreeView控件从数据库获取数据源
- 子绑定控件获取父绑定项的值
- EXTJS4.2 控件之Grid 根据数据源某列数据不同绑定不同的控件setEditor
- C# Winform datagridview控件绑定数据源后列顺序混乱