Web窗体多个提交按钮

时间:2014-08-05 21:29:37

标签: jquery asp.net ajax webforms submit

我必须制作一个简单的网络表单应用,需要批准网站的评论。基本上我需要更新每条评论的状态。

应用程序构建为带有代码的.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

2 个答案:

答案 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
  }