2013-07-17 1 views
0

Я захватываю некоторые записи из базы данных в зависимости от номера идентификатора страницы, количество отображаемых записей будет меняться в любом месте на 1 запись до 50. Мне нужно взять эти записи, затем выбрать какие из них я буду изменять, удалять или не изменяться вообще. Я хотел бы, чтобы выглядеть следующим образом:Включить текстовое поле при изменении SelectedIndex

Не удается получить изображение, чтобы показать с StackOverflow изображения пользователя так здесь: https://dl.dropboxusercontent.com/u/9446763/code/dropdownlist.jpg

Я хотел бы текстовые поля, которые будут отключены, если не выбраны Изменить или Удалить и поля разрешены для пересмотра, если выбран вариант «Изменить».

Ниже приведено то, что у меня есть до сих пор, . Часть, с которой я борюсь, является выбранным изменениемindindex. Я не знаю, как ее закодировать, так что, когда в раскрывающемся списке выбран параметр «Изменить», соответствующие текстовые поля становятся доступными.

ASPX страница

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 

CS Page

private void createControls() 
    { 
     var id = Request.Params["ID"]; 
     System.Data.OleDb.OleDbConnection pcn; 
     System.Data.OleDb.OleDbCommand pcm; 
     System.Data.OleDb.OleDbDataReader prs; 
     pcn = new System.Data.OleDb.OleDbConnection(""); 
     pcm = new System.Data.OleDb.OleDbCommand(); 
     pcn.Open(); 
     pcm.Connection = pcn; 
     var tableSql = @"select * FROM grouplist where ptid = '" + id + "'"; 
     pcm.CommandText = tableSql; 
     prs = pcm.ExecuteReader(); 
     var rowcount = 0; 
     while (prs.Read()) 
     { 
      rowcount++; 

      PlaceHolder1.Controls.Add(new Literal() { Text = "<div class='row'><div class='span3'>" }); 

      TextBox tx = new TextBox(); 
      tx.ID = "txtData" + rowcount.ToString(); 
      tx.Text = prs["name"].ToString().Trim(); 
      tx.Width = 200; 
      tx.CssClass = "span2"; 
      tx.Enabled = false; 
      PlaceHolder1.Controls.Add(tx); 

      PlaceHolder1.Controls.Add(new Literal() { Text = "</div><div class='span2'>" }); 

      TextBox txa = new TextBox(); 
      txa.ID = "amtData" + rowcount.ToString(); 
      txa.Text = prs["amt"].ToString(); 
      txa.CssClass = "span2"; 
      txa.Enabled = false; 
      PlaceHolder1.Controls.Add(txa); 

      PlaceHolder1.Controls.Add(new Literal() { Text = "</div><div class='span3'>" }); 

      DropDownList ddl = new DropDownList(); 
      ddl.Items.Add("No Change"); 
      ddl.Items.Add("Modify"); 
      ddl.Items.Add("Remove"); 
      ddl.Width = 200; 
      ddl.CssClass = "span2"; 
      ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged); 
      ddl.AutoPostBack = true; 
      ddl.ID = "ddlData" + rowcount.ToString(); 

      PlaceHolder1.Controls.Add(ddl); 

      PlaceHolder1.Controls.Add(new Literal() { Text = "</div></div>" }); 

     } 
     prs.Close(); 
    } 
    void ddl_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
+0

Почему вы не используете 'GridView' или' Repeater'? – Logar314159

+0

Я новичок в этом, поэтому, я думаю, мне придется проверить это, я никогда не использовал их раньше. – techora

ответ

0

Вы должны иметь членов в своем классе, которые держат ссылки на ваш DropDownList и другие элементы управления, которые вы хотите включить/выключить.

public class YourClass { 
    private DropDownList ddl; 
    private TestBox txa; 

    private void createControls { 
     // ... 
     TextBox txa = new TextBox(); 
     txa.ID = "amtData" + rowcount.ToString(); 
     // ... 
     DropDownList ddl = new DropDownList(); 
     ddl.Items.Add("No Change"); 
     // ... etc. 
    } 

    void ddl_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (ddl.SelectedIndex == 1) 
      txa.Enabled = true; 
    } 
}