Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据当前用户是否是在ListView中发布评论的用户,相应地删除评论_C#_Asp.net - Fatal编程技术网

C# 根据当前用户是否是在ListView中发布评论的用户,相应地删除评论

C# 根据当前用户是否是在ListView中发布评论的用户,相应地删除评论,c#,asp.net,C#,Asp.net,如何根据使用ListView发布特定评论的用户删除评论?我添加了一个按钮,并将其设置为可见false,以便在我的.cs代码中,当我检查当前登录用户是否是发布评论的用户时,删除按钮将可见。目前,我尝试了以下方法: protected void PostCommentButton_Click(object sender, EventArgs e) { if (!Page.IsValid) return; MembershipUser currentUser = M

如何根据使用ListView发布特定评论的用户删除评论?我添加了一个按钮,并将其设置为可见false,以便在我的.cs代码中,当我检查当前登录用户是否是发布评论的用户时,删除按钮将可见。目前,我尝试了以下方法:

protected void PostCommentButton_Click(object sender, EventArgs e)
{
    if (!Page.IsValid)
        return;


    MembershipUser currentUser = Membership.GetUser();
    Guid currentUserId = (Guid)currentUser.ProviderUserKey;


    string connectionString = ConfigurationManager.ConnectionStrings["CommentConnectionString"].ConnectionString;
    string insertSql = "INSERT INTO Comments(Subject, Body, UserId) VALUES(@Subject, @Body, @UserId)";

    using (SqlConnection myConnection = new SqlConnection(connectionString))
    {
        myConnection.Open();

        SqlCommand myCommand = new SqlCommand(insertSql, myConnection);
        myCommand.Parameters.AddWithValue("@Subject", Subject.Text.Trim());
        myCommand.Parameters.AddWithValue("@Body", Body.Text.Trim());
        myCommand.Parameters.AddWithValue("@UserId", currentUserId);

        myCommand.ExecuteNonQuery();

        myConnection.Close();

        if (currentUser.UserName == Eval("UserName").ToString())
    {
        Control deleteButton = e.Item.FindControl("Button2");
        deleteButton.Visible = true;
    }
}

但这给了我错误。它声明'System.EventArgs'不包含'Item'的定义,并且找不到接受'System.EventArgs'类型的第一个参数的扩展方法'Item'。我将此代码放在我的“通知后”按钮中。我哪里做错了

这就是正在显示的错误

编译错误

描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码

编译器错误消息:CS1061:“System.EventArgs”不包含“Item”的定义,并且找不到接受“System.EventArgs”类型的第一个参数的扩展方法“Item”(是否缺少using指令或程序集引用?)

源错误:

Line 59:         TextBox2.Text = string.Empty;
Line 60: 
Line 61:         if (e.Item.ItemType == ListViewItemType.DataItem)
Line 62:         {
Line 63:             ListViewDataItem currentItem = (ListViewDataItem)e.Item;

如果按钮2位于页面上,则您可以找到如下参考

Button btn = Page.FindControl("Button2");
如果它位于列表视图中,则可以按以下方式找到它:

if (e.Item.ItemType == ListViewItemType.DataItem)
{
   ListViewDataItem currentItem = (ListViewDataItem)e.Item;
   Button btn = (Button)currentItem.FindControl("Button2");
}

您不能使用e.Item.FindControl…………那么我应该使用哪种方法?通常当我键入按钮2时。可见=真;不会有任何错误,但我不知道为什么在这种情况下,我得到一个错误,如果我以前使用这种方法。因此,我改变了上述方式,但我也得到了错误。我已经发布了完整的代码供您参考。按钮2放在哪里?它位于页面或listview?它位于listview内部。在我的“发表评论”按钮中输入代码后,单击该按钮,会出现此错误。我必须将您建议的代码放在其他地方吗?只需将此代码
ListViewDataItem currentItem=(ListViewDataItem)e.Item;按钮btn=(按钮)currentItem.FindControl(“按钮2”)无需设置if条件