簡體   English   中英

復選框列表OnSelectedIndexChanged事件的觸發次數與項目的觸發次數相同

[英]Check box list OnSelectedIndexChanged event is firing as many times as the items are their

我的HTML

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
       <div id="pnlItList" runat="server">
           <asp:CheckBoxList ID="chkIt" runat="server" OnSelectedIndexChanged="chkIt_SelectedIndexChanged" AutoPostBack="true"></asp:CheckBoxList>
       </div>
  </ContentTemplate>
 </asp:UpdatePanel>

我的代碼落后

 protected void chkIt_SelectedIndexChanged(object sender, EventArgs e)
    {
        var d=string.Empty;
        System.Web.UI.WebControls.CheckBoxList lBox = (System.Web.UI.WebControls.CheckBoxList)sender;
        foreach (System.Web.UI.WebControls.ListItem data in lBox.Items)
        {
            if (data.Selected)
            {
                d += data.Value;
            }
        }
    }

這里的問題是,事件觸發了很多次,復選框中有多少個復選框項目。 例如,我有兩個復選框,並且選擇了1個復選框,則事件觸發兩次,並且兩次添加相同的值。 如果有三個復選框,那么事件將觸發三遍,如果我選擇1個復選框,則將相同的值添加三遍。

這是一個工作示例,您可以嘗試以下操作:

這是HTML代碼:

 <asp:CheckBoxList id="check1" AutoPostBack="True"
TextAlign="Right" OnSelectedIndexChanged="check1_SelectedIndexChanged"
runat="server">
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2</asp:ListItem>
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4</asp:ListItem>
<asp:ListItem>Item 5</asp:ListItem>
<asp:ListItem>Item 6</asp:ListItem>
</asp:CheckBoxList>
    <br>
    <asp:label id="mess" runat="server"/>

這是C#代碼:

protected void check1_SelectedIndexChanged(object sender, EventArgs e)
        {
            mess.Text = "Selected Item(s):";
            for (int i = 0; i < check1.Items.Count; i++)
            {
                if (check1.Items[i].Selected == true)
                {
                    mess.Text += check1.Items[i].Text;
                }
            }
        }

或在代碼后面使用編輯:

protected void chkIt_SelectedIndexChanged(object sender, EventArgs e)
    {
        var d=string.Empty;
        for (int i = 0; i < chkIt.Items.Count; i++)
            {
                if (chkIt.Items[i].Selected == true)
                {
                    d += chkIt.Items[i].Text;
                }
            }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM