如何使CheckBoxList与LinkButton事件一起工作

本文关键字:事件 一起 工作 LinkButton 何使 CheckBoxList | 更新日期: 2023-09-27 18:07:49

下面的代码显示了一些复选框,如果您选择其中的任何一个,它将在页面上列出。问题是,我想在页面上使用"LinkButton",如果我点击链接,那么复选框将显示。当我在"asp:LinkButton"中使用OnLoad="Page_Edit"时,checkboxlist工作正常,但我不希望checkboxlist一直出现,我希望它通过单击"点击使用复选框"来显示!如果我使用OnClick="Page_Edit",通过选择任何复选框,checkboxlist消失。任何帮助都会很感激。

  <h3> CheckBoxList Constructor Example </h3>

   <asp:LinkButton id="myid" runat="server"  Text="Click to work with checkbox!" OnLoad="Page_Edit" OnClick="Page_Edit"    /><br />
  Select items from the CheckBoxList.

  <br /><br />
  <asp:PlaceHolder id="Place" runat="server"/>
  <br /><br />
  <asp:label id="Message" runat="server"/>

void Check_Clicked(对象发送者,EventArgs e){

     // Retrieve the CheckBoxList control from the Controls collection
     // of the PlaceHolder control.
     CheckBoxList checklist =  (CheckBoxList)Place.FindControl("checkboxlist1");
     // Make sure a control was found.
     if(checklist != null)
     { 
        Message.Text = "Selected Item(s):<br /><br />";
        // Iterate through the Items collection of the CheckBoxList 
        // control and display the selected items.
        for (int i=0; i<checklist.Items.Count; i++)
        {
           if (checklist.Items[i].Selected)
           {
              Message.Text += checklist.Items[i].Text + "<br />";
           }
        }
     }
     else
     {
        // Display an error message.
        Message.Text = "Unable to find CheckBoxList control.";
     }
  }

  void Page_Edit(Object sender, EventArgs e)
  {
     // Create a new CheckBoxList control.
     CheckBoxList checklist = new CheckBoxList();
     // Set the properties of the control.
     checklist.ID = "checkboxlist1";
     checklist.AutoPostBack = true;
     checklist.CellPadding = 5;
     checklist.CellSpacing = 5;
     checklist.RepeatColumns = 2;
     checklist.RepeatDirection = RepeatDirection.Vertical;
     checklist.RepeatLayout = RepeatLayout.Flow;
     checklist.TextAlign = TextAlign.Right;            
     // Populate the CheckBoxList control.
     checklist.Items.Add(new ListItem("Item 1"));
     checklist.Items.Add(new ListItem("Item 2"));
     checklist.Items.Add(new ListItem("Item 3"));
     checklist.Items.Add(new ListItem("Item 4"));
     checklist.Items.Add(new ListItem("Item 5"));
     checklist.Items.Add(new ListItem("Item 6"));
     // Manually register the event-handling method for the 
     // SelectedIndexChanged event.
     checklist.SelectedIndexChanged += new EventHandler(this.Check_Clicked);
     // Add the control to the Controls collection of the 
     // PlaceHolder control.
     Place.Controls.Add(checklist);
  }

如何使CheckBoxList与LinkButton事件一起工作

取消复选框和链接按钮上的OnLoad;OnLoad每次运行,不符合您的条件,显示只有当链接按钮点击。现在,如果这些项每次都在列表中,我建议只需将控件添加到标记中:

<asp:CheckboxList .. Visible="false">
  <Items>
    <asp:ListItem Text="Item 1" />
  </Items>
</asp:CheckBoxList>

注意可见属性;在linkbutton onclick中,然后设置checkboxlisttid。

更好的想法是在PageLoad方法上创建一个新的CheckBoxList控件,并使用IsPostBack检查。

protected void Page_Load(object sender, EventArgs e)
{                        
if(!IsPostBack)
    //create checkbox list
}

之后,你应该只添加OnClick="Page_Edit"链接按钮和Page_Edit方法内尝试只改变可见属性,例如:

void Page_Edit(Object sender, EventArgs e)
{
   if(yourCondition)
      yourCheckBoxList.Visible = true;
   else
      yourCheckBoxList.Visible = false;
}

解决方案是在"asp:linkButton"上同时有OnLoad和OnClick,并且在OnClick事件中我们使检查表可见。这样,我们已经使复选框被加载到页面,但不可见,除非有人点击链接,使其可见。谢谢大家。