0

我有一个程序,人们可以对视频发表评论。评论来了就像在队列状态。管理员可以进入管理部分并将评论标记为已批准或已删除。他们希望能够在按下上一个或下一个按钮以及批准或删除评论时自动转到队列中标记的下一个项目。我不太了解 jQuery 或 JavaScript,不知道是否可以使用它们来完成它,或者如何通过后面的代码来完成它(这是在 C# .NET 中)。任何帮助,将不胜感激:

Status and value:
In queue = 0
Approved = 1
Removed = 2

这是代码隐藏。状态更改有效,我唯一不能做的就是让它进入队列中标记的下一条记录。前两个事件是空白的,因为我不知道如何填充它们,但简单地说,所有需要做的就是转到队列中标记的下一条记录。

如果您需要更多代码,请告诉我...

    protected void previous_clicked(object sender, EventArgs e)
    {   
    }

    protected void next_clicked(object sender, EventArgs e)
    { 
    }

    protected void approve_clicked(object sender, EventArgs e)
    {
        currentMessage = new videomessage(Request["id"].ToString());

        status.SelectedValue = "1";

        currentMessage.status = "1";
        currentMessage.Save();
    }

    protected void remove_clicked(object sender, EventArgs e)
    {
        currentMessage = new videomessage(Request["id"].ToString());

        status.SelectedValue = "2";

        currentMessage.status = "2";
        currentMessage.Save();
    }
4

2 回答 2

2

听起来对我来说更像是一个架构挑战。

我建议使用Queue这是一种遵循先进先出(FIFO) 方法的集合类型。您将对象放入队列并以相同的顺序将它们取出。从此队列中接收到的对象会自动从队列中删除,因此您可以确保不会两次处理相同的元素。

然后,您描述的工作流程将按照以下简单步骤工作:

  1. 每当有消息到达时,您就将对象放入您的队列中。
  2. 当管理员单击 时next button,您请求队列中的第一个对象。
  3. 您的管理员执行他的管理任务并批准消息。
  4. 再次单击Next从上述项目 1 开始。

[编辑]

糟糕,我意识到我的Queue方法不允许导航回以前的项目。

在这种情况下,我建议使用一个简单的List集合。可以通过列表中基于 0 的位置访问此列表。这使得实现向前/向后导航变得容易。

对于我的示例代码,请记住,我对您的环境有很多不了解的地方,所以我的代码在这里做了很多假设。

您需要在某个地方存储一个包含要批准的消息的集合:

private IList<videomessage> _messagesToApprove = new List<videomessage>();

您还需要一些变量来跟踪集合中的当前位置:

// Store the index of the current message
// Initial value depends on your environment. :-)
private int _currentIndex = 0;

首先,您需要一个将新消息添加到该集合的起点,例如订阅某个事件左右。每当消息到达时,通过调用如下方法将其添加到集合中:

// I made this method up because I do not know where your messages really come from.
// => ADJUST TO YOUR NEEDS.
private void onNewMessageArriving(string messageId)
{
  videomessage arrivingMessage = new videomessage(messageId);
  _messagesToApprove.Add(arrivingMessage);
}

您可以通过增加/减少位置索引轻松实现导航:

private void previous_Click(object sender, EventArgs e)
{
  // Check that we do not go back further than the beginning of the list
  if ((_currentIndex - 1) >= 0)
  {
    _currentIndex--;
    this.currentMessage = this._messagesToApprove[_currentIndex];
  }
  else
  {
    // Do nothing if the position would be invalid
    return;
  }
}

private void next_Click(object sender, EventArgs e)
{
  // Check if we have new messages to approve in our list.
  if ((_currentIndex + 1) < _messagesToApprove.Count)
  {
    _currentIndex++;
    currentMessage = _messagesToApprove[_currentIndex];
  }
  else
  {
    // Do nothing if the position would be invalid
    return;
  }
}

private void approve_Click(object sender, EventArgs e)
{
  // Sorry, I don't know where exactly this comes from, needs to be adjusted to your environment
  status.SelectedValue = "1";

  this.currentMessage.status = "1";
  this.currentMessage.Save();

  // If you want to remove items that have been checked by the admin, delete it from the approval list.
  // Otherwise remove this line :-)
  this._messagesToApprove.RemoveAt(_currentIndex);
}

private void remove_Click(object sender, EventArgs e)
{
  // Sorry, I don't know where exactly this comes from, needs to be adjusted to your environment
  status.SelectedValue = "2";

  this.currentMessage.status = "2";
  this.currentMessage.Save();

  // If you want to remove items that have been checked by the admin, delete it from the approval list.
  // Otherwise remove this line :-)
  this._messagesToApprove.RemoveAt(_currentIndex);
}
于 2012-09-13T15:14:09.517 回答
0

将当前评论保存id在会话或视图状态中,在单击下一个或上一个按钮时将其取回并相应显示:

Session["id"] = 2;
int id = (int) Session["id"]; 
于 2012-09-13T14:52:37.397 回答