Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET C#中跨多个回发传递动态创建的复选框_C#_Asp.net - Fatal编程技术网

在ASP.NET C#中跨多个回发传递动态创建的复选框

在ASP.NET C#中跨多个回发传递动态创建的复选框,c#,asp.net,C#,Asp.net,我被困在一个问题,我已经减少到下面的代码。我在aspx页面上有两个按钮。 这两个按钮都具有runat=“server”属性,并且位于标记内 btnGetData protected void btnGetData_Click(object sender, EventArgs e) { headlines = masg.Split('*'); //Response.Write(headlines.Length); cb =

我被困在一个问题,我已经减少到下面的代码。我在aspx页面上有两个按钮。 这两个按钮都具有
runat=“server”
属性,并且位于
标记内

btnGetData

 protected void btnGetData_Click(object sender, EventArgs e)
 {
            headlines = masg.Split('*');
            //Response.Write(headlines.Length);
            cb = new CheckBox[headlines.Length];

            for (int i = 0; i < headlines.Length; i++)
            {
                cb[i] = new CheckBox();

                cb[i].Text = headlines[i];
                Literal br = new Literal();
                br.Text = "<br/>";
                Form.Controls.Add(cb[i]);
                Form.Controls.Add(br);
            }

 }     

请提供代码帮助。请提供代码输入。如果我不能说清楚,我会改进我的问题。

由于HTTP的无状态性,您需要在每次回发(在
Page\u Init
Page\u Load
中)上重新创建动态创建的控件。你需要知道你必须重新创造什么。因此,您可以将已创建的
复选框的数量保存在
ViewState
变量中

您只需分配与以前相同的ID,并最迟将其添加到
Page\u Load
。如果知道要创建的控件的数量,可以通过将计数器变量附加到control-ID,从中派生ID

推荐读数:

或者你可以使用一个内置的,自动完成这个任务。您只需设置它们的
数据源
并调用
数据绑定
()

以下是我对类似问题的回答,以及实施细节:


    • 由于HTTP的无状态性,您需要在每次回发(在
      Page\u Init
      Page\u Load
      中)上重新创建动态创建的控件。你需要知道你必须重新创造什么。因此,您可以将已创建的
      复选框的数量保存在
      ViewState
      变量中

      您只需分配与以前相同的ID,并最迟将其添加到
      Page\u Load
      。如果知道要创建的控件的数量,可以通过将计数器变量附加到control-ID,从中派生ID

      推荐读数:

      或者你可以使用一个内置的,自动完成这个任务。您只需设置它们的
      数据源
      并调用
      数据绑定
      ()

      以下是我对类似问题的回答,以及实施细节:


      所以动态创建的控件会在第一次单击按钮时被清除……但是有没有办法将选中的复选框传递给下一个按钮?我只需要在单击GetData按钮时生成复选框,这些控件在下一次回发时不再存在。因此,如果您想访问它们的状态(例如
      Checked
      属性)或想要处理它们的事件(例如
      CheckedChanged
      事件),则需要重新创建它们。您可以尝试使用
      请求。表单[]
      ,尽管我更喜欢干净的方法并重新创建它们。但是如果我重新创建它们,复选框集是否会有所不同。如果我理解正确,我选择的复选框将丢失…?@mhasan:不,这是ViewState的工作方式。您只需要像以前一样创建具有“正确”ID的控件。然后将加载该值并成功触发事件。正确的意思是:如果你有10个动态控件,你需要知道数字10。然后,您可以使用此编号创建ID为
      复选框\u 1
      复选框\u 10
      的控件。然后,您需要确保在下次回发时重新创建这些复选框。因此,您只需将10存储在
      ViewState
      Session
      变量中。。如果像本例中那样传递大数据,将导致显著的处理开销,因此不建议使用它。你能不能给我提供一个替代方案…我的知识不足…所以动态创建的控件会在第一次点击按钮时被删除…但是有没有办法将选中的复选框传递给下一个按钮?我只需要在单击GetData按钮时生成复选框,这些控件在下一次回发时不再存在。因此,如果您想访问它们的状态(例如
      Checked
      属性)或想要处理它们的事件(例如
      CheckedChanged
      事件),则需要重新创建它们。您可以尝试使用
      请求。表单[]
      ,尽管我更喜欢干净的方法并重新创建它们。但是如果我重新创建它们,复选框集是否会有所不同。如果我理解正确,我选择的复选框将丢失…?@mhasan:不,这是ViewState的工作方式。您只需要像以前一样创建具有“正确”ID的控件。然后将加载该值并成功触发事件。正确的意思是:如果你有10个动态控件,你需要知道数字10。然后,您可以使用此编号创建ID为
      复选框\u 1
      复选框\u 10
      的控件。然后,您需要确保在下次回发时重新创建这些复选框。因此,您只需将10存储在
      ViewState
      Session
      变量中。。如果像本例中那样传递大数据,将导致显著的处理开销,因此不建议使用它。你能不能给我提供一个替代方案,以弥补我的知识不足。。。
      protected void btnShow_Click(object sender, EventArgs e)
      {
      
      
      
                  for (int i = 0; i < headlines.Length; i++)
                  {
                      if (cb[i].Checked)
                          newmsg += cb[i].Text + '*';
                  }
                  Response.Write("<BR><BR><BR>" + newmsg);
      
      }
      
      CheckBox[] cb;
      string[] headlines;
      string masg;