gpt4 book ai didi

c# - 使用 Gridview 进行参数化向下钻取

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:54 27 4
gpt4 key购买 nike

我正在尝试获取一个 Gridview“选择”链接,以使用 C# 深入到 ASP.NET 中所选行的特定页面。这个 gridview 是在 page_load 中动态生成的,并且是从一个相当简单的 SQL 选择查询进行数据绑定(bind)的。每行都有一个唯一的 id,我希望在单击该行的选择按钮时将其作为 url 中的参数传递。因此,当您单击 id 值为 9 的行上的“选择”按钮时(注意 - 不是 gridview 定义的 id,而是来自 SQL 查询的 id),您将被重定向到一个地址,例如 moreDetail.aspx ?id=9。

但是,当尝试将 id 传递到事件处理程序时,我遇到了问题...GridView.SelectedIndexChanging 将通常的(对象发送者,EventArgs e)作为参数,没有别的,因为 Gridview 是在 Page_Load 上创建的EventArgs 类是无用的。我似乎找不到任何方法将我之前检索到的 ID 传递到事件处理程序中。

经过大量搜索,我尝试创建一个扩展 EventArgs 的类(显然添加了我的额外参数),但似乎使用除 (object sender, EventArgs e) 以外的任何参数都行不通。理论上我可以在事件处理程序中重做 SQL 查询,但在我看来这是实现我正在寻找的东西的糟糕方法,所以我希望有人能够看到我在这里出了什么问题,因为我我确定我遗漏了一些明显的东西。

一些代码 - grid.SelectedRow.Cells[0] 将包含我要传递的参数:

在 Page_Load 中:

GridView grid = new GridView();  
grid.DataSource = source;
CommandField selectField = new CommandField();
selectField.ShowSelectButton = true;
selectField.SelectText = "View Jobs";
grid.Columns.Add(selectField);
grid.SelectedIndexChanging += grid_SelectedIndexChanging;
grid.DataBind();
content.Controls.Add(grid);

事件处理器:

    protected void grid_SelectedIndexChanging(object sender, EventArgs e)
{
Response.Redirect("ViewCustomer.aspx?id=" + grid.SelectedRow.Cells[0]);
}

显然这是行不通的,因为网格的范围没有扩展到处理程序...但是我如何访问该数据?

最佳答案

您需要将 sender 转换为 GridView 以引用您的调用 GridView:

protected void grid_SelectedIndexChanging(object sender, EventArgs e) 
{
GridView grid = (GridView)sender;
Response.Redirect("ViewCustomer.aspx?id=" + grid.SelectedRow.Cells[0]);
}

关于c# - 使用 Gridview 进行参数化向下钻取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8819028/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com