【问题标题】:update Ajax rating control, update comments更新 Ajax 评分控制,更新评论
【发布时间】:2011-07-28 01:19:31
【问题描述】:

我正在尝试更新数据库中 ajaxrating 控件和 cmets 的值`

`  <asp:GridView ID="GridView1" runat="server"  AutoGenerateColumns="false" DataKeyNames="id"
           onrowdatabound="GridView1_RowDataBound" >
        <Columns>
        <asp:BoundField  HeaderText="PurchasedPID"  DataField="PurchasedPID"/>
         <asp:BoundField  HeaderText="DatetimePurchased" DataField="orderdate" />
        <asp:BoundField  HeaderText="MMBName" DataField="MMBName" />
        <asp:TemplateField HeaderText="Rating">
        <ItemTemplate>
                    <asp:Rating  RatingDirection="LeftToRightTopToBottom" Visible="true" AutoPostBack="true"
                      ID="Rating2" runat="server" MaxRating="5"  

StarCssClass="star_rating" EmptyStarCssClass="star_empty" 
                          FilledStarCssClass="star_filled" WaitingStarCssClass="star_saved" CurrentRating='<%# Bind("Rating") %>'
                          OnChanged="Rating2_Changed" >
                        </asp:Rating>
                        </ItemTemplate>
                 </asp:TemplateField>

                 <asp:TemplateField HeaderText="Comments">
                 <ItemTemplate>
                 <asp:TextBox ID="TextBox1" runat="server" Text= '<%# Bind("Comments") %>' multiline="true">
                </asp:TextBox>
                 </ItemTemplate>
                 </asp:TemplateField>

                 <asp:TemplateField HeaderText="Action">
                 <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server">Submit</asp:LinkButton>  
                 </ItemTemplate>
                 </asp:TemplateField>
    </Columns>
                       </asp:GridView>

所以我在成员建议中添加了以下 rowcommand 事件。

  protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Submit")
            {
                GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                Int32 Id = Convert.ToInt32(e.CommandArgument);
                int ratingScore = ((AjaxControlToolkit.Rating)row.FindControl("Rating2")).CurrentRating;
                TextBox TextComments = row.FindControl("TextBox1") as TextBox;
                string comments = TextComments.Text;
                objBLL.UpdateRating(ratingScore, Id,comments);
            }

但这里不是获取新评级,而是在表中插入 CurrentRating。

  int ratingScore = ((AjaxControlToolkit.Rating)row.FindControl("Rating2")).CurrentRating;

我认为是因为这里的 CurrentRating。 知道如何获得更新评级的价值吗?或者我应该使用额外的 Rating_changed 事件来更新速率,然后使用行命令事件来更新 cmets

谢谢 孙

【问题讨论】:

标签: c# asp.net ajax gridview


【解决方案1】:

将 DataKey/ItemID 绑定到 Rating 控件的 Tag 属性的最简单方法

<asp:Rating  RatingDirection="LeftToRightTopToBottom" Visible="true" 
     AutoPostBack="true"
     ID="Rating2" runat="server" MaxRating="5" **Tag='<%# Bind("id")%>'** 
     StarCssClass="star_rating" EmptyStarCssClass="star_empty" 
     FilledStarCssClass="star_filled" WaitingStarCssClass="star_saved"
     CurrentRating='<%# Bind("Rating") %>'
     OnChanged="Rating2_Changed" >
                    </asp:Rating>

事件处理程序

protected void Rating2_Changed(object sender, AjaxControlToolkit.RatingEventArgs e)
    {
         Rating r = sender as Rating;
         int id = Convert.ToInt32(r.Tag);
         objBLL.UpdateRating(Convert.ToInt32(e.Value),id)
 }

【讨论】:

    【解决方案2】:

    您可以使用GridView1_RowCommand 更新数据库中的评分。例如

     protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Rating")
        {
            GridViewRow row = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
            Int32 Id = Convert.ToInt32(e.CommandArgument);
            ratingScore = ((AjaxControlToolkit.Rating)row.FindControl("Rating2")).CurrentRating;
        }
    }
    

    将CommandName="Rating" 设置为您的链接按钮

    <asp:TemplateField HeaderText="Action">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Rating">Submit</asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多