选择返回值的行
本文关键字:返回值 选择 | 更新日期: 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;
}