使用ASP.NET中的超链接编辑gridview中的行

时间:2011-04-15 00:07:53

标签: c# asp.net sql-server visual-studio gridview

我有一个显示产品实例信息的gridview;我需要在“操作”列中添加一个超链接,以显示一个显示行数据的视图/编辑页面。如何使链接将该特定行的数据显示在编辑页面中?

注意:还有其他类似标题的问题,但是,它们不包含此特定主题。

3 个答案:

答案 0 :(得分:3)

尝试这样的事情?

ViewProducts.aspx:

<columns>
    <asp:HyperLinkField DataNavigateUrlFields="ProductID" HeaderText="Edit" 
        ItemStyle-Width="80" 
            DataNavigateUrlFormatString="EditProduct.aspx?productID={0}" 
                Text="Select" ItemStyle-HorizontalAlign="Center" />
    ...
</columns>

EditProduct.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {   
        if (!Page.IsPostBack)
        {
            if (Request.QueryString["productID"] != null)
            {
                productID = Convert.ToInt32(Request.QueryString["productID"]);
                ...
            }
            ...
        }
     }

答案 1 :(得分:3)

在gridview中使用datakeys,使用datakey将获取每个单击的超链接的ID,然后您可以使用该ID轻松编辑或删除所选项目。在后面的代码中找到超链接控件,传递数据键并为其写入d update sql。为了将您的数据移动到其他页面,您可以进行会话,但如果您正在开发商业网站会话由于其安全问题而不是一个好主意,在这种情况下使用cookie。

 protected void Page_Load(object sender, EventArgs e)
{   
    if (!Page.IsPostBack)
    {
        if (Request.QueryString["productID"] != null)
        {
            productID = Convert.ToInt32(Request.QueryString["productID"]);
            bindData(productID)
        }
        ...
    }
 }
   protected void bindData(int productID)
    {
     //to avoid sql injection as mentioned below use parameters 
      SqlConnection conn = new SqlConnection(ConnectionString); // define connection string globally or in your business logic
      conn.Open();
      SqlCommand sql = new SqlCommand("Select * From [Table] Where ID = @productID",conn);
      SqlParameter parameter = new SqlParameter();
      parameter.ParameterName = "@ID";
   parameter.Value = productID;
       sql.Parameters.Add(parameter);
       conn.close()
  }

你也可以使用Microsoft.ApplicationBlocks.Data.dll来避免重复ado.net,它会减少你的代码。

答案 2 :(得分:2)

有n + 1种方法可以解决这个问题。如果您正在使用sql数据源,那么如果您没有特定要求,您可以为VS生成sql和编辑逻辑。这是一个代码项目tutorial

另一个常用的策略是在行中添加一个命令按钮,并使用要编辑的行的ID填充命令参数,然后在oncommand事件句柄中填充所需的逻辑。

您还可以使用简单的html链接并使用get参数。或者你可以像我说的那样会话有很多方法可以解决这个问题。