6

私は動的に作成labelsしました。textboxesすべてうまくいきますが、2番目label はまったく表示されたくありません。どこが間違っていますか?これはC#での私のコードです:

private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    OracleDataReader reader;
    int x = 434;
    int y = 84;
    int i = 0;
    try
    {
        conn.Open();

        foreach (var itemChecked in checkedListBox1.CheckedItems)
        {
            Label NewLabel = new Label();
            NewLabel.Location = new Point(x + 100, y);
            NewLabel.Name = "Label" + i.ToString();
            Controls.Add(NewLabel);
            TextBox tb = new TextBox();
            tb.Location = new Point(x, y);
            tb.Name = "txtBox" + i.ToString();
            Controls.Add(tb);
            y += 30;
            OracleCommand cmd = new OracleCommand("SELECT distinct data_type from all_arguments where owner='HR' and argument_name='" + itemChecked.ToString() + "'", conn);


            reader = cmd.ExecuteReader();

            while (reader.Read())
            {
                label[0].Text = reader["data_type"].ToString();
            }

            i++;
        }
    }
    finally
    {
        if (conn != null)
            conn.Close();
    }
}

private void Procedure()
{
    string proc = "";
    try
    {
        conn.Open();

        if (this.listView1.SelectedItems.Count > 0)
            proc = listView1.SelectedItems[0].Text;

        OracleCommand cmd = new OracleCommand("" + proc + "", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandTimeout = 600;

        int i = 0;
        foreach (var itemChecked1 in checkedListBox1.Items)
        {
            Control[] txt = Controls.Find("txtBox" + i.ToString(), false);
            Control[] label = Controls.Find("Label" + i.ToString(), false);
            cmd.Parameters.Add(new OracleParameter("select distinct data_type from all_arguments where owner='HR' and argument_name=toupper("+itemChecked1.ToString()+")",conn));
            cmd.Parameters[":"+itemChecked1.ToString()+""].Value=label[0].Text;
            cmd.Parameters.Add(new OracleParameter(":" + itemChecked1.ToString() + "", OracleDbType.Varchar2));
            cmd.Parameters[":" + itemChecked1.ToString() + ""].Value = txt[0].Text;

            i++;
4

1 に答える 1

1

セカンドレーベルが登場したと思います。しかし、そのテキストは空の文字列です! だからあなたはそれを見ることはありません。DBリーダーから返された「data_type」を確認してください。

于 2013-02-28T14:15:54.300 に答える