【毕设问题】GridView如何激发一个事件得到该行主键

[复制链接]
查看11 | 回复2 | 2010-6-10 22:35:00 | 显示全部楼层 |阅读模式
现有一个GRIDVIEW
数据绑定没用数据源控件,用的事代码绑定
我希望能通过一个字段 按钮 编辑 选择 删除 哪个一个都随便 我希望通过点击此字段 可以激活一个事件 事件中让我可以得到主键值
也就是说我要带着这行的主键跳页,由于需要存SESSION所以不能用GET方式。
问题就是我找不到这行 也不确定具体是用selectIndexchanging 还是changed 很头疼这东西
回复

使用道具 举报

千问 | 2010-6-10 22:35:00 | 显示全部楼层
用隐藏的INPUT记住每次选择的项目,在进行数据绑定时,检查保存的值,再在DataGrid中进行选中显示。下面时完整的代码和例子:


跨页面实现多选

* {FONT-SIZE:12PX}
#Status {text-align:left}

[B]












[I]

'/>

[/I]





[I]

' runat="server" ID="TitleShow"/>

[/I]





[I]

' runat="server"/>

[/I]







[I]

[/B]

回复

使用道具 举报

千问 | 2010-6-10 22:35:00 | 显示全部楼层
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Demo
{
///
/// SelectMultiPages 的摘要说明。
///
public class SelectMultiPages : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.HtmlControls.HtmlInputHidden HdnSelectedValues;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{

// 在此处放置用户代码以初始化页面

if(!Page.IsPostBack)

BindData();
}
private void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
{

DataGrid1.CurrentPageIndex = e.NewPageIndex;

BindData();
}
void BindData()
{

OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

+ HttpContext.Current.Server.MapPath("aspx.mdb"));

OleDbDataAdapter da = new OleDbDataAdapter("Select Title, CreateDate from Document",cn);

DataSet ds = new DataSet();

da.Fill(ds);

DataGrid1.DataSource= ds;

DataGrid1.DataBind();
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{

//重新显示所选择的项目

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

{

if(HdnSelectedValues.Value.IndexOf(((Literal)e.Item.Cells[1].FindControl("TitleShow")).Text) >= 0 )

{

HtmlInputCheckBox ChkSelected = (HtmlInputCheckBox)(e.Item.Cells[0].FindControl("ChkSelect"));

ChkSelected.Checked = true;

}

}
}
private void Button1_Click(object sender, System.EventArgs e)
{

//为了显示的方便进行替换的

Label1.Text = HdnSelectedValues.Value.Replace(",","
  • ");
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {

    //

    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

    //

    InitializeComponent();

    base.OnInit(e);
    }
    ///
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    ///
    private void InitializeComponent()
    {

    this.DataGrid1.ItemDataBound +=

    new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);

    this.DataGrid1.PageIndexChanged +=

    new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);

    this.Button1.Click += new System.EventHandler(this.Button1_Click);

    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion

    }
    }
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    主题

    0

    回帖

    4882万

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    48824836
    热门排行