选择返回值的行

时间:2015-11-10 18:51:58

标签: c# asp.net gridview

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

我需要使用来自Access数据库的数据填充我的网格视图(已经使用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();

            }

我希望这有助于某人:) 谢谢你的回答

1 个答案:

答案 0 :(得分:0)

在网格中添加一个链接按钮作为模板字段,并在运行时从对象模型设置链接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;
}