ASP.NET c#评级控件 - 使其成为一次评级并修复

时间:2015-03-28 16:26:57

标签: c# asp.net asp.net-ajax ajaxcontroltoolkit

我试图按照这个例子让用户评价他们参加的研讨会:

http://www.aspsnippets.com/Articles/Using-ASPNet-AJAX-Rating-Control-inside-GridView-TemplateField-ItemTemplate.aspx

如何才能让用户仅对ONCE评分,并显示用户评分的评级?我不想让用户多次更改自己的评级。

谢谢!

2 个答案:

答案 0 :(得分:0)

在Fruit_Rating表上,您必须添加UserId

FruitId | Rating | UserId

在插入评分之前,您必须进行查询以查看UserId是否已对该Fruit进行了评分,如果它是真的而不是跳过,则进行插入。

伪鳕鱼将如下所示。

var currentRating = GetFruit_RatingBy(RatingId and UserId);
if(currentRating == null) {
     currentRating = new Fruit_Rating(FruitId, newRating, UserId);
     Insert(currentRating);
}

如果您希望该单元格是只读的,则可以覆盖RowDataBound事件并在那里为readonly编写逻辑。

答案 1 :(得分:0)

您需要在评级表中运行选择查询,并根据UserID

进行检查

查询:SELECT Rating FROM FRUIT_RATING WHERE UserID = @userID

将其转换为DataTable并检查DataTable是否包含dt.Rows.Count之前的任何行,并检查它是否为>0,即是否会有用户评价一个水果,然后FRUIT_RATING表会有一个条目,所以你通过更改它的CSS类来禁用文本框,为此你可以很容易地找到here

AND 如果表格中没有dt.Rows.Count == 0条目,则您可以在表格中输入内容。

我建议您使用asp:Repeater控件,因为查找控件更容易,并且与asp:GridView控件非常相似。您可以通过以下方式在Repeater中找到控件:

TextBox txtBox = (TextBox)rptr.Items[i].FindControl("txtRating");

然后通过以下方式更改它的CSS类:

txtBox.CssClass = "disabled-input";