2013-09-05 3 views
0

테이블에있는 동적으로 생성 된 dropdownlists (Page_Load 중)의 ID를 가져온 다음 해당 드롭 다운리스트에서 선택한 값을 찾아이 값을 저장하려고했습니다. 버튼 click.This에 테이블이나의 GridView 내가동적으로 생성 된 웹 컨트롤의 ID를 가져 오는 방법

  drd.ID = "dbaseid" + rowctr; 
     drd1id[rowctr]=drd1.ID; 

rowctr 각 드롭 다운에 고유 ID를 할당하는 인덱스 변수입니다 (Page_Load 이벤트에서) 번호의 할당 방법이다.

Page_Load에서 ID를 가져 오는 방법은 무엇입니까? 내가 배열의 ID를 저장 한 후 세션 변수를 사용하여 시도 :

  drdid[rowctr]=drd.ID; 
     drd1id[rowctr]=drd1.ID; 
     Session["drditem"]=drditem; 
     Session["drd1item"]=drd1item; 

을 다음 buttonclick 이벤트 함수의 ID를 가져 오기 위해 시도 :

  drdid=(string[])Session["drdid"];   
     drd1id=(string[])Session["drd1id"]; 
     string[] a =new string [50]; 
     for(int i =0;i<noodropdowns;i++) 
     { 
      a=drd1id[i]; 
      a.selectedindex//doesnt work !! 
     } 

실제 ID를 얻을 수있는 방법이 있나요 및 그런 다음 그들에게 작업을? 나는 asp.net에 새로운, 사과 소리가 들리면 사과드립니다. 미리 감사드립니다.

+1

왜'SelectedIndexChanged' 이벤트를 사용하지 않으려하면'((DropDownList) sender) .Id'를 통해 ID를 얻습니다. 'AutoPostBack'을'true'로 설정하지 않으면이 이벤트를 사용할 수도 있습니다. 변경되는 모든 드롭 다운에 대해 실행됩니다. –

+0

안녕하세요 Tim 답장을 보내 주셔서 감사합니다.하지만 어떻게 그것을 사용할 ID를 얻을 수없는'SelectedIndexChanged' 사용할 수 있습니다. pageload에서 드롭 다운이 생성되고 id가 동시에 부여됩니다. 버튼 클릭시 선택한 항목을 찾아야 해당 데이터를 저장할 수 있습니다. – rawatdeepesh

+0

@awatdeepesh :'SelectedIndexChanged' 이벤트 핸들러를 프로그래밍 방식으로 추가해야합니다 :'dynDll.SelectedIndexChanged + = OnDropDownListSelectedIndexChanged;'OnDropDownListSelectedIndexChanged'는 클래스에서 그것을 처리하는 메소드입니다. –

답변

0

발견 성공 .. 드롭 다운을 발견 테이블에 드롭 다운에서 값이 well.Here 코드는 같은 표에 변화 선택 .Every 시간을 선택된 값을 저장

 using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.IO; 
    using System.Data; 
    using System.Data.SqlClient; 
    using System.Data.OleDb; 
    using System.Collections; 
    using System.Web.Security; 
    using System.Text; 
    using System.Configuration; 
    using System.Web.SessionState; 
    using System.Windows; 

    public partial class Default2 : System.Web.UI.Page 
    { 
    Table tblRecipients = new Table(); 
    DropDownList drd = new DropDownList(); 
    DropDownList drd1 = new DropDownList(); 
    protected void Page_Init(object sender, EventArgs e) 
{ 
    DataTable dtt = (DataTable)Session["griddata"]; 
    int n = dtt.Columns.Count; 
    string[] drd1item = new string[n]; 
    string[] excel = new string[n]; 
    for (int i = 0; i < dtt.Columns.Count; i++) 
    { 
     excel[i] = dtt.Columns[i].ColumnName; 
    } 
    Session["exceldata"] = excel; 

    ////saving sql database column names in an array variable 
    DataTable dtt1 = (DataTable)Session["dbasecolumns"]; 
    int l = dtt1.Columns.Count; 
    string[] drditem = new string[l]; 
    string[] sqlcolumn = new string[l]; 
    for (int j = 0; j < dtt1.Columns.Count; j++) 
    { 
     sqlcolumn[j] = dtt1.Columns[j].ColumnName; 
    } 
    Session["sqlcolumn"] = sqlcolumn; 
    Session["l"] = l; 

    //Table Creation 
    Table mytable = new Table(); 
    mytable.Visible = true; 
    mytable.GridLines = GridLines.Both; 
    TableHeaderRow th = new TableHeaderRow(); 
    TableHeaderCell thc = new TableHeaderCell(); 
    TableHeaderCell thc1 = new TableHeaderCell(); 

    mytable.Rows.Add(th); 
    Label lbl1 = new Label(); 
    Label lbl2 = new Label(); 

    lbl1.Text = "Database"; 
    lbl2.Text = "Excel"; 

    thc.Controls.Add(lbl1); 
    thc1.Controls.Add(lbl2); 
    th.Cells.Add(thc); 
    th.Cells.Add(thc1); 


    for (int rowctr = 0; rowctr < sqlcolumn.Length; rowctr++) 
    { 
     TableCell mycell = new TableCell(); 
     TableCell mycell1 = new TableCell(); 

     for (int cellctr = 0; cellctr < 1; cellctr++) 
     { 
      //dropdown with database columns 
      DropDownList drd = new DropDownList(); 
      drd.Items.Insert(0, new ListItem("--Select--", "0")); 
      drd.ID = "dbaseid" + rowctr; 
      for (int i = 0; i < sqlcolumn.Length; i++) 
      { 
       drd.Items.Add(sqlcolumn[i]); 
       drditem[i] = sqlcolumn[i]; 
      } 
      // drd.SelectedIndexChanged+=new EventHandler(drd1_SelectedIndexChanged); 


      //dropdown with excel columns 
      DropDownList drd1 = new DropDownList(); 

      drd1.ID = "excelid" + rowctr; 

      for (int j = 0; j < excel.Length; j++) 
      { 
       drd1.Items.Add(excel[j]); 
       drd1item[j] = excel[j]; 
      } 
      // drd1.SelectedIndexChanged +=new EventHandler (drd1_SelectedIndexChanged); 
      //session variable to store dropdown elements in an array 




      //Table cells and rows addition 
      TableRow myrow = new TableRow(); 
      mycell.Controls.Add(drd); 
      mycell1.Controls.Add(drd1); 
      myrow.Cells.Add(mycell); 
      myrow.Cells.Add(mycell1); 
      mytable.Rows.Add(myrow); 
      mytable.BorderStyle = BorderStyle.Solid; 
     } 
    } 

    DynamicControlsHolder.Controls.Add(mytable); 
} 

    protected void Button1_Click(object sender, EventArgs e) 
{ 
    Table mytable = new Table(); 
    mytable.GridLines = GridLines.Both; 
    string s; 
    foreach (Control ctl in DynamicControlsHolder.Controls) 
    { 
     if (ctl is Table) 
     { 
      Table tblnew = ctl as Table; 
      { 
       foreach (Control ctrl in tblnew.Controls) 
       { 
        if (ctrl is TableRow) 
        { 
         TableRow trow = new TableRow(); 
         TableRow tblrow = ctrl as TableRow; 
         { 

          foreach (Control cntrl in tblrow.Controls) 
          { 
           if (cntrl is TableCell) 
           { 
            TableCell tcell = new TableCell(); 
            TableCell tblcell = cntrl as TableCell; 
            { 
             foreach (Control cntrol in tblcell.Controls) 
             { 
              if (cntrol is DropDownList) 
              { 
               DropDownList myddr = cntrol as DropDownList; 
               if (cntrol != null) 
               { 




                s = myddr.SelectedItem.Text; 
                tcell.Text = s; 


               } 
              } 

             } 

            } 
            trow.Cells.Add(tcell); 
           } 
          } 

         } 

         mytable.Rows.Add(trow); 
        } 
       } 
      } 
     } 
    } 
    DynamicControlsHolder.Controls.Add(mytable); 
} 

}

1

GridView의 모든 드롭 다운 목록을 반복하면서 드롭 다운 목록을 얻으려고한다면 어떻게해야합니까?

//Add the drop down as following in page load 
drd.ID = "dbaseid"; //do not add dynamic id other wise you will not able to find it. 
        //It client id would be different based upon its position in DOM 


//loop over gridview row and get the control as following 

foreach (GridViewRow row in grid.Rows) 
{ 
    var ddl = row.FindControl("dbaseid") as DropDown; 
    //do what ever with the drop down 
} 
+0

답장을 보내 주셔서 감사합니다. 그러나 아직 gridview 준비가 안된다. 드롭 다운 목록에서 selecteditems를 찾아야하고 (나는 Page_load에 이미 드롭 다운을 표시했다.) 선택한 값을 테이블이나 GridView 헤더로 다른 이벤트에서 사용해야한다. – rawatdeepesh

0

동적으로 생성 된 드롭 다운리스트가 테이블에 있다고 언급했습니다. 나는 아난드가 드롭 다운 목록의 값을 채우려는 GridView가 아니라 그 테이블을 참조하고 있다고 생각한다. 따라서 테이블의 행을 반복하고 드롭 다운 목록 ID를 가져올 수 있습니다.

관련 문제