选择返回值的行

本文关键字:返回值 选择 | 更新日期: 2023-09-27 18:21:28

我想在我的web应用程序中使用GridView,但我需要务实地使用它。

我需要用访问数据库中的数据填充网格视图(已经使用DataTable完成),然后让用户从表中选择一行。如果选择了该行,则用户可以单击一个按钮,该按钮会将他/她重定向到一个新的网页,该网页将允许他/她编辑数据库中的数据。我想通过编写代码来实现这一点(好吧,我点击并拖动gridView控件,然后为它编写代码)。

经过研究,我终于设法使用DataTable填充了我的GridView,但我找不到一个解决方案,可以让每一行都是可选的,并返回一个特定的值(例如,Name列中的字符串)。

有人能给我指正确的方向吗?:)我希望能够像Java中的JTable一样使用它。

这是我的作业项目。我不想使用任何类型的向导,因为这会减少分数。我可以使用ListBox,但我想更进一步,学习一些新的东西。

这是我当前的代码(仅包含示例数据,未连接到数据库)。

 protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("DOB");
            DataRow dr = dt.NewRow();
            dt.Rows.Add(new Object[] { 1, "Smith" });
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

编辑:

我设法找到了一种非常简单的方法来做我需要做的事情。这种方法改变了我最初的想法,但这将使我的网络应用程序更友好,使用速度更快:)这是我的解决方案:

    protected void Page_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Name");
                dt.Columns.Add("DOB");
                DataRow dr = dt.NewRow();
                dt.Rows.Add(new Object[] { 1, "Smith" });
                //Generate buttons for each row 
                GridView1.AutoGenerateSelectButton = true;
                //string array that acts as a key for which values to be return once an even occurs 
                string[] key = { "Name" };
                GridView1.DataKeyNames = key; 
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
protected void GridView1_SelectedIndexChanged1(object sender, EventArgs e)
            { 
//simple label to check if the program returns correct value 
Label2.Text = GridView1.SelectedValue.ToString();
            }

我希望这能帮助到某人:)感谢您的回答

选择返回值的行

在网格中添加一个链接按钮作为模板字段,并在运行时从对象模型中设置链接URL。您将使用正确的URL绑定所有链接,一旦单击(调用javascript函数),它将引导用户到具有正确行/对象Id的指定URL。

HTML

<asp:Grid id="gridId" OnRowDataBound="grdId_RowDataBound">
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkId" Text='<%#Eval("Your Object Property")%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</asp:grid>

代码隐藏

protected void grdId_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lnk = (LinkButton)e.Row.FindControl("lnkId");
//Get your URL which could be http://domain/page?Id=currentRowId
lnk.OnClientClick = "return navigate('"URL');"
}
}

Javascript

function navigate(url)
{
window.location.href = url;
}