ASP. NET Текстовое поле не может сохранить значение, установленное JavaScript на панели обновления - PullRequest
0 голосов
/ 13 марта 2020

Это может быть повторяющийся вопрос, но ни один из них не помог мне.

У меня есть 10-20 дел, представляющих категории. Каждый div имеет атрибут rel, содержащий идентификатор категории. Весь код находится внутри UpdatePanel.

Я хочу обновить идентификаторы выбранных категорий (нажал div) в базе данных. Существует asp: TextBox и asp: нажатие кнопки, по которой я буду устанавливать выбранное значение в текстовом поле.

<asp:TextBox ID="lbSelectedCategories" CssClass="lbSelectedCategories" runat="server"></asp:TextBox>

Для этого я добавил следующий jQuery код:

$(".area-interest-list li").on('click', function () {
        $(this).toggleClass("active");
        copySelectedCategoriesToLabel();
});

function copySelectedCategoriesToLabel() {
    var selectedCategoryIds = [];

    $(".area-interest-list").find('li').get().forEach(function (item, index, array) {
        var selectedCategoryId = $(item).attr('rel');

        if ($(item).attr('class') == 'active') {
            selectedCategoryIds.push(selectedCategoryId);
        }
    });

    // Remove last ,
    var strSelectedCategoryIds = selectedCategoryIds.join(',');

    $(".lbSelectedCategories").text(strSelectedCategoryIds);
}

Я попробовал обе функции text () и val (). Я вижу, что значения правильно устанавливаются в textobx, но когда я пытаюсь прочитать на Button_Click, я получаю пустое значение.

string lbSelectedCategories = lbSelectedCategories.Text;

Возможно, обратная передача на UpdatePanel теряет значения textobx.

Я прочитал, что метки не сохраняют свои значения, но для меня, текстовое поле или скрытое поле не сохраняют свои значения .

Обновить код панели

<asp:UpdatePanel ID="updatePanelCategories" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal"><span class="ti-close"></span></button>
            <asp:Button runat="server" ID="btnSaveCategory" class="btn btn-style-red" Text="Save" OnClick="btnSaveCategory_Click"></asp:Button>
            <h4>Areas Of Interest</h4>
        </div>
        <div class="modal-body">
            <asp:Repeater ID="repeaterResourceCategory" runat="server" OnItemDataBound="repeaterResourceCategory_ItemDataBound">
                <HeaderTemplate>
                    <div class="area-interest-list">
                        <ul>
                </HeaderTemplate>
                <ItemTemplate>
                    <li class="" rel='<%# Eval("ItemID") %>' id="liSelected" runat="server">
                        <span class="icon-cloud-computing" runat="server" id="spIcon" rel='<%# Eval("IsSelected") %>'></span>
                        <p runat="server" id="pText"><%# Eval("CategoryName") %></p>
                    </li>
                </ItemTemplate>
                <AlternatingItemTemplate>
                    <li class="" rel='<%# Eval("ItemID") %>' id="liSelected" runat="server">
                        <span class="icon-cloud-computing" runat="server" id="spIcon" rel='<%# Eval("IsSelected") %>'></span>
                        <p runat="server" id="pText"><%# Eval("CategoryName") %></p>
                    </li>
                </AlternatingItemTemplate>
                <FooterTemplate>
                    </ul>
            </div>
                </FooterTemplate>
            </asp:Repeater>
            <asp:TextBox ID="lbSelectedCategories" CssClass="lbSelectedCategories" runat="server" style="width:1px;height:1px;"></asp:TextBox>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

Код кнопки

protected void btnSaveCategory_Click(object sender, EventArgs e)
{
    AddSelectedCategories();
}

private void AddSelectedCategories()
{
    UserInfo userInfo = MembershipContext.AuthenticatedUser;

    string[] arSelectedCategories = lbSelectedCategories.Text.Split(',');

    if (arSelectedCategories.Length > 0)
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CMSConnectionString"].ConnectionString))
        {
            con.Open();

            for (int i = 0; i < arSelectedCategories.Length; i++)
            {
                string sql = @"insert into sometable(UserID, ResourceCategoryID) values(" + userInfo.UserID + "," + arSelectedCategories[i] + ")";

                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.ExecuteNonQuery();
            }

            con.Close();
        }
    }
}

Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...