【发布时间】:2015-03-28 16:26:57
【问题描述】:
我正在尝试按照此示例让用户对他们参加的研讨会进行评分:
如何让用户只对评分进行一次评分并显示用户评分?我不想让用户多次更改自己的评分。
谢谢!
【问题讨论】:
标签: c# asp.net asp.net-ajax ajaxcontroltoolkit
我正在尝试按照此示例让用户对他们参加的研讨会进行评分:
如何让用户只对评分进行一次评分并显示用户评分?我不想让用户多次更改自己的评分。
谢谢!
【问题讨论】:
标签: c# asp.net asp.net-ajax ajaxcontroltoolkit
在 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 编写逻辑。
【讨论】:
您需要在评级表中运行选择查询并对照UserID 进行检查
查询:SELECT Rating FROM FRUIT_RATING WHERE UserID = @userID
将其放入 DataTable 并检查 DataTable 是否包含 dt.Rows.Count 的任何行并检查它是否是 >0 ,即是否会有用户对水果进行评分,然后是 @987654328 @table 将有一个条目,因此您可以通过更改它的 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";
【讨论】: