Ich implementiere wie und nicht mögen auf meiner asp.net-Seite. Hier ist die aspx
Seitebekommen zweimal wie auf meiner Seite beim Update durch Update-Panel
<asp:UpdatePanel ID="VotePanel" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<div class="row">
<!-- left column -->
<div class="col-lg-12 col-sm-12 col-xs-12">
<div class="text-center">
<h1>
<asp:Label ID="LikeLabel" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="DislikeLabel" runat="server" Text="Label"></asp:Label>
<br />
<div class="btn-group">
<asp:Button ID="LikeButton" runat="server" CssClass="btn btn-default" Text="Like"
OnClick="LikeButton_Click" /><asp:Button ID="UnlikeButton" CssClass="btn btn-default"
runat="server" Text="Dislike" OnClick="UnlikeButton_Click" />
</div>
</div>
</div>
</div>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="LikeButton" />
<asp:AsyncPostBackTrigger ControlID="UnlikeButton" />
</Triggers>
</asp:UpdatePanel>
das ist mein cs Seite
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
public partial class Question : System.Web.UI.Page
{
ConnectionClass cl;
DataTable dt,dt1;
string QuestonId;
protected void Page_Load(object sender, EventArgs e)
{
cl = new ConnectionClass();
QuestonId = Request.QueryString["Id"];
string[] var = { "@id" };
SqlDbType[] type = { SqlDbType.Int };
string[] value = { QuestonId };
dt1 = cl.DatatableProcedure("GetQuestionLikeDislike", var, type, value);
LikeLabel.Text = dt1.Rows[0].ItemArray[0].ToString();
DislikeLabel.Text = dt1.Rows[0].ItemArray[1].ToString();
dt = cl.DatatableProcedure("GetAnswers", var, type, value);
}
protected void LikeButton_Click(object sender, EventArgs e)
{
string[] var = { "@id" };
SqlDbType[] type = { SqlDbType.Int };
string[] value = { QuestonId };
dt1 = cl.DatatableProcedure("InsertLike&getLikeDislike", var, type, value);
VotePanel.Update();
}
protected void UnlikeButton_Click(object sender, EventArgs e)
{
string[] var = { "@id" };
SqlDbType[] type = { SqlDbType.Int };
string[] value = { QuestonId };
dt1 = cl.DatatableProcedure("InsertUnlike&getLikeDislike", var, type, value);
VotePanel.Update();
}
}
Wenn ich diese Seite und klicken Sie auf Schaltfläche ausführen, es es zwei Mal implementiert und dergleichen wird um 2 erhöht Bitte helfen Ich mit der Lösung, so dass das Gleiche nur um eins erhöht wird. Das wird ein großer Gefallen sein. Danke im Voraus! das sind meine gespeicherten Prozeduren:
ALTER procedure [dbo].[InsertUnlike&getLikeDislike]
(
@id int
)
as
begin
update QuestionTable
set Dislikes=Dislikes + 1 where [email protected];
select Likes, Dislikes from QuestionTable where [email protected]
end
ALTER procedure [dbo].[InsertLike&getLikeDislike]
(
@id int
)
as
begin
update QuestionTable
set Likes=Likes + 1 where [email protected];
select Likes, Dislikes from QuestionTable where [email protected]
end
ALTER procedure [dbo].[GetQuestionLikeDislike]
(
@id int
)
as
begin
select Likes, Dislikes from QuestionTable where [email protected]
end
Warum rufen Sie 'VotePanel.Update()' manuell? Update wird durch den Button Klick sowieso ausgelöst, mit diesem Anruf aktualisieren Sie es zweimal ich denke, – Andrei
@Anderi, löschte ich diese Zeile aus meinem Code, aber immer noch seine Arbeit die gleiche –