2013-07-17 28 views
0

我从数据库抓取一些记录,具体取决于页面的ID号,将显示的记录数量会有所不同,任何地方都会将1条记录改为50条。我需要记录这些记录,然后选择哪些是我将要修改,删除或根本不会改变的。我想它看起来像这样:在SelectedIndex上启用文本框更改

无法获取的图像与计算器图片上传所以在这里显示:https://dl.dropboxusercontent.com/u/9446763/code/dropdownlist.jpg

我想的文本字段如果没有选择更改或删除被禁用,而如果选择了修改选项,则启用这些字段以进行修改。

以下是我到目前为止,我正在努力的部分是选定的索引更改我不知道如何对其进行编码,以便在下拉框中选择“修改”时,将启用相应的文本框。

ASPX页面

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

CS页

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; 
    } 
} 
相关问题