2013-02-28 4 views
6

बनाने के लिए मैंने labels और textboxes गतिशील रूप से बनाया। सब कुछ ठीक हो जाता है, लेकिन दूसरा label बिल्कुल दिखना नहीं चाहता है। मैं कहाँ गलत हूँ? यह मेरा कोड सी #:जहां मैं गलत हूँ? लेबल को गतिशील रूप से सी #

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++; 
+1

एचटीएमएल देखें और सत्यापित करें कि लेबल वहां है। यदि ऐसा है, तो सीएसएस को मैन्युअल रूप से समायोजित करने के लिए अपने ब्राउज़र के विकास उपकरण का उपयोग करें। आईई 9 ने औजारों में सभ्य बनाया है, बस एफ 12 दबाएं। –

+5

"जहां मैं गलत हूं?" एसक्यूएल इंजेक्शन के अलावा, जादू चर नाम: 'int x = 434; int y = 84; ', और यह तथ्य कि आप * हर * चेक किए गए आइटम के लिए एक चुनिंदा कथन चला रहे हैं? और आप बस घूमने और इसे ढूंढने के लिए एक लेबल क्यों बनाते हैं? कुचलने के लिए, मुझे लगता है कि आपको यह वर्णन करना चाहिए कि आप क्या करने की कोशिश कर रहे हैं, और इस तरह हम इस कोड को फेंक सकते हैं और शुरू कर सकते हैं। – aquinas

+2

मैंने इसे पोस्ट करने में कामयाब रहा, जो यहां पोस्ट किया गया था, लेकिन मुझे नहीं पता कि उसने पोस्ट क्यों हटा दिया। मैं इन 2 लाइनों में किसी अन्य चीज़ के साथ शब्द लेबल को प्रतिस्थापित करता हूं: नियंत्रण [] लेबल = नियंत्रण। ढूँढें ("लेबल" + i.ToString(), झूठा); और NewLabel.Name = "लेबल" + i.ToString(); – Viva

उत्तर

1

मुझे लगता है कि दूसरा लेबल दिखाई दिया है। लेकिन इसका पाठ एक खाली स्ट्रिंग है! तो आप इसे कभी नहीं देख पाएंगे। डीबी रीडर द्वारा लौटाए गए "data_type" की जांच करें।

संबंधित मुद्दे