2016-09-22 13 views
0

Я новичок в материале базы данных, но хочу заполнить текстовые поля данными с помощью datareader и sql-запроса. Моя программа создает 4 текстовых поля с каждого корабля в моей базе данных. Каждое текстовое поле должно быть заполнено данными из другого столбца. Когда заполняются 4 текстовых поля, будет добавлен новый корабль с 4 текстовыми полями, а вторая строка каждого столбца должна быть добавлена ​​в текстовые поля.Заполнить текстовые поля данными из нескольких столбцов базы данных с помощью datareader

Это мой код до сих пор:

public void Schip() 
{  
    using (SqlConnection thisConnection = new SqlConnection("Data Source=VMB-LP12;Initial Catalog=SmmsData;Integrated Security=True")) 
    { 
     string oString = "Select SchipNaam, RederijNr, Lengte, Laadvermogen FROM AlgSchipInfo"; 
     SqlCommand oCmd = new SqlCommand(oString, thisConnection); 

     thisConnection.Open(); 
     using (SqlDataReader oReader = oCmd.ExecuteReader()) 
     { 
      int i = 0; 
      while (oReader.Read()) 
      // for (int i = 0; i < count; i++) 
      { 

       System.Web.UI.HtmlControls.HtmlGenericControl createDiv = 
       new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 
       createDiv.ID = "createDiv"; 
       this.Controls.Add(createDiv); 
       List<TextBox> tb_names = new List<TextBox>(); 
       TextBox tb_name = new TextBox(); 

       //TextBox tb_name = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_1"; 
       tb_name.Text = (oReader["SchipNaam"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name1 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_2"; 
       tb_name.Text = (oReader["RederijNr"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name2 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_3"; 
       tb_name.Text = (oReader["Lengte"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte :<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name3 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_4"; 
       tb_name.Text = (oReader["Laadvermogen"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 
       i++; 
      } 
     } 
    } 
} 

Я использую мой запрос, чтобы найти четыре колонки и мой DataReader читать данные. С tb_name.text = (oReader["SchipMaam"].ToString()) текстовые поля будут заполнены. Я пропустил часть этой головоломки?

Проблема в том, что мои текстовые поля остаются пустыми, когда я использую это. Нет проблем с DIV или ID, насколько я знаю. Как я могу заполнить свои текстовые поля данными из столбцов моей таблицы базы данных?

Было бы здорово, если бы вы могли указать мне в правильном направлении.

+0

Почему Вы добавляете все TextBoxes к tb_names? – sachin

+0

Я хочу, чтобы каждое текстовое поле имело и уникальное имя. Я делаю это с помощью инкремента int (int i и i ++), поэтому я могу всегда вносить конкретные изменения в текстовое поле. –

+0

и почему у вас есть TextBox tb_name = new TextBox(); прокомментировал? – sachin

ответ

1

Используйте этот код, вы никогда не назначая значение <input type='text' тега генерируется:

public void Schip() 
{  
    using (SqlConnection thisConnection = new SqlConnection("Data Source=VMB-LP12;Initial Catalog=SmmsData;Integrated Security=True")) 
    { 
     string oString = "Select SchipNaam, RederijNr, Lengte, Laadvermogen FROM AlgSchipInfo"; 
     SqlCommand oCmd = new SqlCommand(oString, thisConnection); 

     thisConnection.Open(); 
     using (SqlDataReader oReader = oCmd.ExecuteReader()) 
     { 
      int i = 0; 
      while (oReader.Read()) 
      // for (int i = 0; i < count; i++) 
      { 

       System.Web.UI.HtmlControls.HtmlGenericControl createDiv = 
       new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 
       createDiv.ID = "createDiv"; 
       this.Controls.Add(createDiv); 
       List<TextBox> tb_names = new List<TextBox>(); 
       TextBox tb_name = new TextBox(); 

       //TextBox tb_name = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_1"; 
       tb_name.Text = (oReader["SchipNaam"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Scheepspnaam: <input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name1 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_2"; 
       tb_name.Text = (oReader["RederijNr"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> RederijNr:<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name2 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_3"; 
       tb_name.Text = (oReader["Lengte"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Lengte :<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 

       //TextBox tb_name3 = new TextBox(); 
       tb_name.ID = "CreateT_" + i.ToString() + "_4"; 
       tb_name.Text = (oReader["Laadvermogen"].ToString()); 
       createDiv.Controls.Add(new LiteralControl 
       ("<div class='form-group'><div class='clearfix' ></div><div class='row'><div class='col-md-3'></div><div class='col-md-3'> Laadvermogen:<input type='text' value='" + tb_name.Text + "' id='" + tb_name.ID + "' runat='server'/></div></div></div>")); 
       tb_names.Add(tb_name); 
       i++; 
      } 
     } 
    } 
} 
+0

Каждое текстовое поле имеет уникальный идентификатор в моем коде, поэтому я могу сделать конкретные chanegs, если захочу. tb_name.ID возвращает: CreateT0_1, CreatT0_2 и в следующей последовательности CreateT1_1. Я пропустил что-то еще здесь? –

+0

И я хочу, чтобы каждый div имел одинаковый идентификатор, поэтому я могу использовать свой CSS для них в одно и то же время. –

+0

Для использования CSS используйте классы. Нет 2 элементов на странице должны иметь одинаковый идентификатор. – sachin

 Смежные вопросы

  • Нет связанных вопросов^_^