Fir DataList you have to replace the OnRatingChanged function as Below
protected void OnRatingChanged(object sender, RatingEventArgs e)
    {
        int rowIndex = ((sender as Rating).NamingContainer as DataListItem).ItemIndex;
        int fruitId = Convert.ToInt32(DataList1.DataKeys[rowIndex].ToString());
        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("INSERT INTO FruitRatings VALUES(@FruitId, @Rating)"))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@FruitId", fruitId);
                    cmd.Parameters.AddWithValue("@Rating", e.Value);
                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }
        }
        Response.Redirect(Request.Url.AbsoluteUri);
    }
DataList:
<asp:DataList ID="DataList1" runat="server" DataKeyField="FruitId">
        <ItemTemplate>
            <br />
            <table cellpadding="5px" cellspacing="0" class="td th">
                <tr>
                    <td style="max-width: 200px;">
                        <asp:Label Text='<%# Eval("FruitName") %>' runat="server" />
                    </td>
                    <td style="max-width: 500px;">
                        <cc1:Rating ID="Rating1" AutoPostBack="true" OnChanged="OnRatingChanged" runat="server"
                            StarCssClass="Star" WaitingStarCssClass="WaitingStar" EmptyStarCssClass="Star"
                            FilledStarCssClass="FilledStar" CurrentRating='<%# Eval("Rating") %>'>
                        </cc1:Rating>
                    </td>
                </tr>
            </table>
            <br />
        </ItemTemplate>
    </asp:DataList>
This is how i have design my DataList you can have Table or dont have it depends on your way of displaying.
Ref:Using ASP.Net AJAX Rating Control inside GridView TemplateField ItemTemplate
Thank You.