首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使CheckBoxList与LinkButton事件协同工作?

如何使CheckBoxList与LinkButton事件协同工作?
EN

Stack Overflow用户
提问于 2015-08-12 15:58:26
回答 3查看 660关注 0票数 0

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

代码语言:javascript
复制
  <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) {

代码语言:javascript
复制
     // 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);

  }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-12 18:54:27

解决方案是在"asp:linkButton“上同时使用OnLoad和OnClick,在OnClick事件中,我们会让检查清单可见。通过这种方式,我们已经将复选框加载到页面上,但除非有人单击使其可见的链接,否则它是不可见的。谢谢你们所有人。

票数 0
EN

Stack Overflow用户

发布于 2015-08-12 16:05:32

去掉复选框和链接按钮上的OnLoad;OnLoad每次运行,不满足只在单击链接按钮时显示的条件。现在,如果每次项目总是在列表中,我建议将控件添加到标记中:

代码语言:javascript
复制
<asp:CheckboxList .. Visible="false">
  <Items>
    <asp:ListItem Text="Item 1" />
  </Items>
</asp:CheckBoxList>

注意可见的属性;在“链接”按钮上单击,然后设置checkboxlistID.Visible = true,用户就会看到它。

票数 1
EN

Stack Overflow用户

发布于 2015-08-12 18:49:02

更好的方法是在PageLoad方法上创建一个新的带有IsPostBack检查的IsPostBack控件。

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{                        
if(!IsPostBack)
    //create checkbox list
}

在此之后,应该只向链接按钮添加OnClick=" Page_Edit“,在Page_Edit方法中尝试只更改可见属性,例如:

代码语言:javascript
复制
void Page_Edit(Object sender, EventArgs e)
{
   if(yourCondition)
      yourCheckBoxList.Visible = true;
   else
      yourCheckBoxList.Visible = false;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31970184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档