0

これを行うことで、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)はgettinfalseで、すべてのチェックボックスがオンになっています。私は今どうすればいい?ヘルプ

4

1 に答える 1

0

ページに表示する場合は、動的コントロールを毎回 On_Init() でページに追加する必要があります。そうでなければ得られるものは何もありません。さらに、複数のユーザーが同じページにアクセスすると問題が発生します。それらをセッションに保存するか、 this.Form.FindControls() を試すことができます

于 2013-01-14T06:52:44.023 に答える