Сохранить звездный рейтинг в строке сетки с помощью jquery ajax

У меня есть gridview с каждой строкой, содержащей звездный рейтинг. Когда пользователь нажимает «Сохранить» в строке, он должен обновить значение рейтинга в базе данных с помощью ajax, я использую код из http://rateit.codeplex.com для реализации рейтинга. поэтому мне нужно использовать div в каждой строке с данным классом, как показано ниже

            <asp:TemplateField HeaderText="rate" HeaderStyle-HorizontalAlign="Left">
            <ItemTemplate>
                <div class="rateit" id="divrate"></div>
            </ItemTemplate>
        </asp:TemplateField>

а кнопка сохранения это

            <asp:TemplateField>
            <ItemTemplate>
                <asp:ImageButton ID="imgSave" OnClientClick="javascript:return SaveItem(<% Eval("ID") %>, <% divrate.ClientID( %>);" runat="server" ImageUrl="~/Imgs/Yes.gif" AlternateText="Save"  />
            </ItemTemplate>
        </asp:TemplateField>

и функция javascript

function SaveItem(RowID,RatingControlID){

         var ri = $(RatingControlID);
         var value = ri.rateit('value'); //rateit is the class used in div

         $.ajax({
             url: 'rateit.aspx', //save function
             data: { id: RowID, value: value }, 
             type: 'POST',
             success: function (data) {
                 $('#response').append('<li>' + data + '</li>');

             },
             error: function (jxhr, msg, err) {
                 $('#response').append('<li style="color:red">' + msg + '</li>');
             }
         });
     });

Но в самом вызове функции выдает ошибку


person sjd    schedule 29.10.2013    source источник


Ответы (1)


Вы не прервали вызов ClientID:

OnClientClick="javascript:return SaveItem(<% Eval("ID") %>, <% divrate.ClientID( %>);"

становится:

OnClientClick="javascript:return SaveItem(<% Eval("ID") %>, <% divrate.ClientID() %>);"
person Jim Yarbro    schedule 29.10.2013
comment
исправил, но теперь ошибка: теги сервера не могут содержать конструкции ‹% ... %›. - person sjd; 29.10.2013
comment
О, извините, даже не заметил, что во втором шаблоне это элемент управления asp. да, вы можете попытаться создать свой собственный элемент управления, если хотите, чтобы он выводил строку с включенными переменными, но это одна из тех ситуаций, когда я бы предложил просто создать кнопку изображения вручную с помощью HTML. stackoverflow.com/questions/11772326/submit-button-image - person Jim Yarbro; 29.10.2013
comment
я использовал изображение типа ввода. теперь ошибка заключается в том, что методы привязки данных, такие как Eval(), XPath() и Bind(), можно использовать только в контексте элемента управления с привязкой к данным. можно ли использовать скрытый элемент управления и ссылаться на него в функции javascript? - person sjd; 29.10.2013