2013-07-16 3 views
2

У меня есть столбец в db, который содержит несколько значений, разделенных запятой Теперь я хочу отредактировать его, чтобы получить значения из db, разделить его и сохранить в строчном массиве затем генерировать текстовые и присвоить значения в текстовые поля теперь я хочу, чтобы получить обновленные значения из того, что генерируемых текстовых здесь кодПолучение значения динамически генерируемых текстовых полей в asp.net

static string[] temp; 
    static string[] temp1; 
    static TextBox tbin; 
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
      { 
       barcode_lab.Text = GridView1.SelectedRow.Cells[1].Text; 
       date_lab.Text = GridView1.SelectedRow.Cells[2].Text; 
       string tin = GridView1.SelectedRow.Cells[3].Text; 
       string tout = GridView1.SelectedRow.Cells[4].Text; 

       //////////////conversion///////////////////// 

       temp = tin.Split(','); 
       for (int i = 0; i < temp.Length; i++) 
       { 
        tbin = new TextBox(); 
        tbin.Text = temp[i]; 
        tbin.ID = "timein"+i; 
        PlaceHolder6.Controls.Add(tbin); 
        PlaceHolder6.Controls.Add(new LiteralControl("<br />")); 
       } 
      } 

Обновлено:

protected void update_btn_Click(object sender, EventArgs e) 
    { 

      foreach (GridViewRow row in GridView1.Rows) 
      { 
       foreach (TableCell cell in row.Cells) 
       { 
        List<TextBox> textBoxes = MissingExtention.GetAllControls(cell).Where(c => c is TextBox); 

       } 
      } 
    } 

public static class MissingExtention 
{ 
    public static List<Control> FlattenChildren(this Control control) 
    { 
     var children = control.Controls.Cast<Control>(); 
     return children.SelectMany(c => FlattenChildren(c).Where(a => a is TextBox)).Concat(children).ToList(); 
    } 

    public static List<Control> GetAllControls(Control control) 
    { 
     var children = control.Controls.Cast<Control>(); 
     return children.SelectMany(c => FlattenChildren(c)).Concat(children).ToList(); 
    } 
} 

сейчас происходит следующее сообщение об ошибке:

  1. оператор Еогеасп не может работать с переменными типа «System.Web.UI.WebControls.GridView», потому что «System.Web.UI.WebControls.GridView» не содержит общедоступную определение
  2. Самый лучший перегруженный матч «» GetEnumerator метод для «GPServices.MissingExtention.GetAllControls (System.Web.UI.Control)» имеет некоторые недопустимые аргументы
  3. Аргумент 1: не может конвертировать из «System.Web.UI. ControlCollection 'to' System.Web.UI.Control '

ответ

0

Попробуйте это:

новый класс:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

/// <summary> 
/// Summary description for OhterMethods 
/// </summary> 
public static class OhterMethods 
{ 
    public static List<Control> FlattenChildren(this Control control) 
    { 
     var children = control.Controls.Cast<Control>(); 
     return children.SelectMany(c => FlattenChildren(c).Where(a => a is TextBox ||  a is Label || a is Literal || a is Button || a is GridView || a is HyperLink || a  is DropDownList)).Concat(children).ToList(); 
    } 

    public static List<Control> GetAllControls(Control control) 
    { 
     var children = control.Controls.Cast<Control>(); 
     return children.SelectMany(c => FlattenChildren(c)).Concat(children).ToList(); 
    } 
} 

Получить все текстовые поля

foreach (GridViewRow row in GridView1.Rows) 
{ 
    foreach (TableCell cell in row.Cells) 
    { 
     List<TextBox> textBoxes = OtherMethods.GetAllControls(cell).Where(c => c is TextBox); 
    } 
} 

Вы также можете получить определенное текстовое поле по идентификатору:

OtherMethods.GetAllControls (клетки) .FirstOrDefault (c => c - TextBox & & c.ID == "txtTex tBox ")

Вы должны получить каждую строку сетки. После этого, для определенного столбца или для каждого из них, получите все текстовые поля и извлеките значение. Вы должны вызвать вышеуказанный метод с помощью столбца в качестве параметра. Если вам нужно обновить определенную строку по id, вы можете добавить атрибут в каждое текстовое поле или добавить скрытое поле в столбец каждой строки и извлечь значение.

1

хорошо получил самый простой способ сделать это

for (int i = 0; i < temp.Length; i++) 
    { 
     PlaceHolder6.Controls.Add(new LiteralControl("<input id='txt' name='txtName' type='text' value='"+temp[i]+"' />")); 
     PlaceHolder6.Controls.Add(new LiteralControl("<br />")); 
    } 

protected void update_btn_Click(object sender, EventArgs e) 
    { 
     Label1.Text = Request.Form["txtName"]; 
    } 

также вернуть мне все значения в текстовых полях одной строки, которая помогает мне

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