Динамически добавленные флажки не работают в asp.net с использованием C#?

Я добавляю несколько флажков на своей странице asp.net, выполнив это:

 public static CheckBox[] chck;

на странице загрузки:

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
      con.Open();
        SqlCommand cmd = new SqlCommand("select count(CompanyName) from Stock_Company");
        cmd.Connection = con;
        comno = Convert.ToInt32(cmd.ExecuteScalar());
         con.Close();

        chck = new CheckBox[comno];
    }
 }

Теперь у меня есть функция, которая генерирует флажки:

   public void generatecheckbox1()
{

    con.Open();
    SqlCommand cmd = new SqlCommand("select CompanyName from Stock_Company");
    cmd.Connection = con;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    DataTable dt = ds.Tables[0];
    con.Close();
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        chck[i] = new CheckBox();
        chck[i].ID = "chck" + Convert.ToString(i);
        chck[i].Text = dt.Rows[i]["CompanyName"].ToString();
        pnlcom1.Controls.Add(chck[i]);
        pnlcom1.Controls.Add(new LiteralControl("<br />"));
    }
  }

и я звоню по этому поводу в выпадающем списке:

 protected void ddluserwebser_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddluserwebser.SelectedItem.Text == "Custom")
    {
        generatecheckbox1();
    }
 }

насколько это все работает нормально... но одним нажатием кнопки я хочу получить текст флажка выбора, который я не получаю

я сделал функцию:

   public string getbsecompany()
{
    string companyname = "";
    string bsetricker = "";
    con.Open();
    SqlCommand cmd = new SqlCommand("select CompanyName from Stock_Company");
    cmd.Connection = con;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    DataTable dt = ds.Tables[0];
    con.Close();
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        if (chck[i].Checked == true)     **THE PROBLEM IS HERE**
        {
            companyname = chck[i].Text;
            con.Open();
            SqlCommand cmdd = new SqlCommand("select BSETickerCode from Stock_Company where CompanyName='" + companyname + "'");
            cmdd.Connection = con;
            bsetricker += bsetricker + "+" + cmdd.ExecuteScalar();
            con.Close();
        }
    }

    return bsetricker;
}

и я называю это здесь:

  protected void btnusersave_Click(object sender, EventArgs e)
{
    string bsetricker = "";
    bsetricker = getbsecompany();
}

проблема в том, что я не получаю текст флажка. когда я проверяю if (chck[i].Checked == true) я получаю false и все флажки проверены. Что мне теперь делать? любая помощь

1 ответ

Решение

Динамические элементы управления должны добавляться на страницу в On_Init() каждый раз, если вы хотите, чтобы они отображались на странице. Иначе ты ничего не сможешь получить. Кроме того, лучше не использовать статическое значение, содержащее список checkBox, это вызовет проблему при многопользовательском доступе к одной и той же странице. Вы можете сохранить их в сеансе или попробовать это.Form.FindControls()

Другие вопросы по тегам