我必须制作一个简单的网络表单应用,需要批准网站的评论。基本上我需要更新每条评论的状态。
应用程序构建为带有代码的.aspx文件。
这是填充视图的代码:
<tbody class="body">
<asp:Repeater ID="repeater" DataSource="<%# Comments%>" runat="server">
<ItemTemplate>
<tr class="row">
<td class="col1"><%# Eval("CommentNrCrt") %></td>
<td class="col2"><%# Eval("CommentText") %></td>
<td class="col3"><%# Eval("ItemTitle")%></td>
<td class="col4" data-commentID="<%# Eval("CommentID") %>">
<input type="button" name="yes" value="yes">
<input type="button" name="no" value="no">
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
后面的代码没问题,从数据库获取数据,填充视图,但现在,我被卡住了。最初我计划如果我想要批准评论,我点击“是”,然后从服务器调用更新方法,对该评论进行更新,反之为“否”。
我的问题是我不知道如何告诉服务器我点击了什么“是”按钮,因为对于每个评论我都有“是”和“现在”。
我想到ajax将“data-commentID”作为标识发送,但我不知道该怎么做。 (用ajax)
请建议我。
祝你好运, 的Marius
答案 0 :(得分:0)
要完成此任务,您可以使用Repeater的ItemCommand事件。我将按钮更改为ASP.NET按钮,并将CommentID添加为CommandArgument,将Yes或No添加为CommandText。然后在ItemCommand事件中,您可以检索这些值并进行数据库更新。
如果您想使用AJAX执行此操作,可以在转发器周围放置一个ASP.NET UpdatePanel。
以下是对转发器和按钮的更改:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Repeater ID="repeater" DataSource="<%# Comments%>" runat="server" OnItemCommand="repeater_ItemCommand">
<ItemTemplate>
<tr class="row">
<td class="col1"><%# Eval("CommentNrCrt") %></td>
<td class="col2"><%# Eval("CommentText") %></td>
<td class="col3"><%# Eval("ItemTitle")%></td>
<td class="col4">
<asp:Button ID="btnYes" runat="server" CommandName='<%# Eval("CommentID") %>' CommandArgument="Yes" Text="Yes" />
<asp:Button ID="btnNo" runat="server" CommandName='<%# Eval("CommentID") %>' CommandArgument="No" Text="No" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
......在您的代码背后:
protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
int commentId = int.Parse(e.CommandArgument.ToString());
string yesOrNo = e.CommandName;
//Do your database update here
}
我不确定你是C#还是VB,但下面的代码是在C#中,但应该很容易找出VB等价物。
或者你可以使用JavaScript或jQuery来完成AJAX部分。如果是这种情况,请在您的问题中明确这一点,我自己或某人可能会提供另一个答案。
答案 1 :(得分:0)
我已经解决了它:
所以我把这个:<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
放在表格后面。
我在每个按钮上添加了OnClick事件,其背后的代码正在工作:
protected void btnYes_Click(object sender, EventArgs e)
{
Button btn=(Button)sender;
string commentID = btn.CommandName;
//more code
}