0

我可以知道如何从GridViewusing a中删除行LinkButton吗?我在 google 中找到的代码正在使用 databound GridView。我根据使用DropDownList. 谢谢

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    string username;
    username = HttpContext.Current.User.Identity.Name;
    if (DropDownList1.SelectedValue.Equals("Expired"))
    {
        SqlConnection conn4 = new SqlConnection(My connection);
        SqlDataAdapter adapter;
        string mySQL2;
        mySQL2 = 
            "SELECT Title,MessageStatus From Table_Message WHERE Username ='" 
            + username 
            + "' AND MessageStatus = 'Expired' AND Method = 'Email'";
        adapter = new SqlDataAdapter(mySQL2, conn4);
        conn4.Open();

        DataSet ds3 = new DataSet();
        adapter.Fill(ds3);
        //Execute the sql command
        GridView1.DataSource = ds3;
        GridView1.DataBind();
        conn4.Close();

    }
    else if (DropDownList1.SelectedValue.Equals("Pending"))
    {
        SqlConnection conn3 = new SqlConnection(My connection);
        SqlDataAdapter adapter1;
        string mySQL;
        mySQL = 
            "SELECT Title,MessageStatus From Table_Message WHERE Username ='" 
            + username 
            + "' AND MessageStatus = 'Pending' AND Method = 'Email'";
        adapter1 = new SqlDataAdapter(mySQL, conn3);
        conn3.Open();

        DataSet ds2 = new DataSet();
        adapter1.Fill(ds2);
        //Execute the sql command
        GridView1.DataSource = ds2;
        GridView1.DataBind();
        conn3.Close();
    }
4

2 回答 2

0

您可以采取以下步骤

1)将网格的DataKeyNames映射到表的主键

2)在LinkBut​​ton上有

<asp:TemplateField HeaderText="Action">
                        <ItemTemplate>
<asp:ImageButton ID="imgBtnDelete" runat="server" ImageUrl="/_layouts/images/DELETE.GIF"
                            AlternateText="Delete" CommandName="DeleteUser" CausesValidation="false" ToolTip="Delete"/>
                        </ItemTemplate>

3)在rowdatabound事件中绑定命令参数

 protected void GvwUser_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        ImageButton imgBtnDelete;


        if (e.Row.RowType == DataControlRowType.DataRow)
        {            
            imgBtnDelete = (ImageButton)e.Row.FindControl("imgBtnDelete");
            imgBtnDelete.CommandArgument = gvwUser.DataKeys[e.Row.RowIndex].Value.ToString();

        }
    }

4)在后面的代码中编写实现为

protected void GvwUser_RowCommand(object sender, GridViewCommandEventArgs e)
    {
int userId = 0;
if (e.CommandName.Equals("DeleteUser"))
        {
            //get the user id
            userId = Convert.ToInt32(e.CommandArgument.ToString());

            //GetUser will delete the user
            if (DeleteUser(userId) > 0)
            {
             Page.ClientScript.RegisterStartupScript(this.GetType(), "Delete", "alert('User Deleted.');", true);
            }
}
于 2012-09-13T09:48:42.717 回答
0

如果您允许匿名用户访问列表:

这可能是一个选择:

  1. 创建一个删除.aspx
  2. 在您的查询中获取主键列(例如:Id、UId...)
  3. 在网格视图中使 DataKeyNames = "Id"
  4. 在linkbutton的onclick事件中,将用户重定向到delete.aspx?Id='Your data id'
  5. delete.aspx 只能由授权用户访问。保存意外的数据丢失。
  6. 在 delete.aspx 中放置一个删除按钮,它的 onclick 事件会删除具有该唯一 ID 的记录。
  7. 这可能是一种安全地做事的方式。

如果您显示列表以仅授权用户,那么您可以使用 ajax 编写删除代码:

  • OnClientClick():编写发送请求的javascript函数:delete.aspx?Id='Id',删除那里的记录。
于 2012-09-13T07:12:47.697 回答