我试图按照这个例子让用户评价他们参加的研讨会:
如何才能让用户仅对ONCE评分,并显示用户评分的评级?我不想让用户多次更改自己的评级。
谢谢!
答案 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";