priya231 Ответов: 1

Почему webmethod не вызывается внутри updatepanel в C#


Я хочу вызвать веб-метод из json,но веб-метод не вызывает из json при использовании панели обновления в форме.Я должен использовать панель обновления.

Вот мой код клиентской стороны

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script>

<script type="text/javascript">
        $(function () {
            $("[id*=btnSave]").bind("click", function () {
                
                var event1 = {};
                event1.EventDate = $("[id*=txtEventDt]").val();
                event1.Description = $("[id*=txtEventDesc]").val();
                $.ajax({
                    type: "POST",
                    url: "Default3.aspx/SaveEvent",
                    data: '{event1: ' + JSON.stringify(event1) + '}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response) {
                        $find("mpe").hide();
                        clear();
                        __doPostBack('hdText', 'JavaScript');
                    }
                });
                return false;
            });
        });
        //==== Method to clear input fields
        function clear() {
            $("#txtEventDt").val("");
            $("#txtEventDesc").val("");                      
        }
    </script>



Код На Стороне Сервера

[WebMethod]
   [ScriptMethod]
   public static void SaveEvent(Event event1)
   {
       try
       {
           string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
           using (SqlConnection con = new SqlConnection(constr))
           {
               using (SqlCommand cmd = new SqlCommand("INSERT INTO Event VALUES(@EventDate, @Description)"))
               {
                   cmd.CommandType = CommandType.Text;
                   Default3 obj = new Default3();
                   string eventdate=obj.changeYYYYMMDD(event1.EventDate.ToString());
                   cmd.Parameters.AddWithValue("@EventDate", eventdate);
                   cmd.Parameters.AddWithValue("@Description", event1.Description);
                   cmd.Connection = con;
                   con.Open();
                   cmd.ExecuteNonQuery();
                   con.Close();

               }
           }
       }
       catch (Exception ex)
       {
       }
   }



Теперь обратной передачи части

protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {

        ClientScript.RegisterForEventValidation("hdText", "JavaScript");

        base.Render(writer);

    }
    protected void hdText_Click(object sender, EventArgs e)
    {
    }


Что я уже пробовал:

Я попробовал использовать postback со стороны клиента.

Любая помощь будет очень признательна.
Пожалуйста.... есть ответ

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Вы отладили? Попадает ли он в метод с помощью отладчика?

priya231

На самом деле событие нажатия кнопки не срабатывает.Я попробовал это сделать, изменив идентификатор кнопки, как проверено в firefox.



Вместо $("[id*=btnSave]"). bind ("click", функция () {

Я использую $("#MainContent_btnSave"). click(функция () {

но не преуспел.Любая помощь с вашей стороны будет высоко оценена

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Проверьте мой ответ.

F-ES Sitecore

Вы не опубликовали достаточно, чтобы дать какую-либо конкретную помощь, где находится кнопка сохранения и где появляется панель обновления? Вы также можете использовать страницы master\content, которые также меняют все.

Javascript работает на clink, поэтому просмотрите источник вашей страницы и убедитесь, что есть элемент, соответствующий селектору для вашего события click, так как .net изменит идентификаторы ваших элементов, и убедитесь, что вы не пытаетесь прикрепить событие click до того, как кнопка появится в разметке, т. е. убедитесь, что ваш тег скрипта находится в нижней части страницы.

F-ES Sitecore

Вы должны обновить исходный вопрос с помощью кода и убедиться, что он правильно отформатирован. Не могу сказать точно, но если проблема в том, что щелчок не работает после того, как вы сделаете обновление, то посмотрите на этот.

priya231

Спасибо за ссылку, которую вы мне предоставили.Это помогло мне найти решение.

1 Ответов

Рейтинг:
0

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Попробуйте, как показано ниже...

$("[id*=btnSave]").click(function () {
    // Your logic here. 
});