2

我在 DIV 中有一个 CheckboxList。单击按钮时,DIV 显示为模式弹出窗口。然后用户勾选复选框列表中的任意数量的项目并单击确定。这隐藏了div。

一旦用户单击主窗体上的保存按钮,我需要根据单击复选框列表中的哪些项目将参数传递给存储过程,但是当我运行保存代码时它们总是设置为未选中。我很想知道如何正确地做到这一点。

谢谢

查询:

 $(document).ready(function () {
        $('#<%=txtLANG.ClientID %>').click(function () {
            $("#overlay-back").dialog({
                resizable: false,
                modal: true,
                width: 500,
                height: 400,
                buttons: {
                    OK: function () {
                        GetLanguages();
                        $(this).dialog("close");
                    },
                    Cancel: function () {
                        $(this).dialog("close");
                    }
                }
            });
        });
    });

在 CodeBehind 中保存方法

  private void Save()
  {
        List<string> lstItemsChecked = new List<string>();

        for (int i = 0; i < chkTopLanguages.Items.Count; i++)
        {
            if(chkTopLanguages.Items[i].Selected)
                lstItemsChecked.Add(chkTopLanguages.Items[i].Value);
        }
        //stored proc call
  }

  protected void btnSubmit_Click(object sender, EventArgs e)
  {
         Save();
  }

DIV 弹出窗口和 CheckBoxList 的 ASPX 代码

 <div id="overlay-back" style="display:none;">
  <td rowspan="3" valign="top">
     <asp:CheckBoxList ID="chkTopLanguages" TextAlign="Right" runat="server" />
           <br />
     <asp:TextBox runat="server" ID="txtOtherLanguages" Text="Other Languages..."></asp:TextBox>
  </td>
 </div>
4

2 回答 2

0

尝试将 AutoPostBack 设置为 false:

<asp:CheckBoxList ID="chkTopLanguages" TextAlign="Right" runat="server" AutoPostBack="false" /> 

对于 CheckBoxList 控件。

于 2013-03-27T19:46:59.640 回答
0

可能发生这种情况是因为当您关闭弹出窗口时,无法访问弹出窗口上的控件。我不知道确切的原因,但您可以在 javascript 中创建一个数组变量。每当您选中或取消选中复选框时;在 javascript 的帮助下,您可以将该变量修改为所有变量的设置与否。

我很久以前就使用了模态弹出窗口,并且只有这样的问题。这种方法可能不是最佳的,但肯定会奏效。

于 2013-03-27T19:56:00.673 回答