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++;
htmlを表示し、ラベルがあることを確認します。そうであれば、ブラウザの開発ツールを使用してCSSを手動で調整してください。 IE9はツールでうまく組み込まれています、ちょうどF12を押してください。 –
"どこが間違っていますか?" SQLインジェクション以外にも、魔法の変数名は 'int x = 434; int y = 84; '、そしてチェックされた項目ごとにselect文を実行しているという事実?そしてなぜそれを回して見つけてくれるのですか?むしろ、私はあなたがしようとしていることを説明するべきだと思います。そして、このコードを捨ててやり直すことができます。 – aquinas
ここに投稿した人が私はそれをやりましたが、投稿を削除した理由はわかりません。私は、これらの2つの行に何か他の単語ラベルを置き換えます:Control [] label = Controls.Find( "Label" + i.ToString()、false); NewLabel.Name = "ラベル" + i.ToString(); – Viva