2012-11-10 1 views
0

La façon dont je proceded est la suivante:Comment pouvons-nous trouver un contrôle à partir d'une table créée dynamiquement?

Nom de la table

: tbltt

1.I ajouté une table de sourcecode

2.Created lignes et coloumns dans cs

3.Data obtiendra se lier à l'exécution

4.Je veux sauver la tablevalus, Pour cela vous voulez trouver le contrôle à l'intérieur (il y a une liste déroulante dans chaque ligne et colomn)

Tableau s ci-dessous

public void createdynamictable() 
    { 
     string[] p = { "flag", "campusid", "ttid" }; 
     string[] v = { "3", campusID.ToString(), ddlTimetable.SelectedValue }; 
     DataTable dtt2 = bl.SelectDataTableUsingSp("SP_timetablefinal", p, v); 
     if (dtt2.Rows.Count > 0) 
     { 
      DataTable dtTimeTable = new DataTable(); 
      dTable1 = new DataTable(); 

      ArrayList freeHours = new ArrayList(); 
      ArrayList PeriodCount = new ArrayList(); 
      ArrayList PeriodCount1 = new ArrayList(); 
      ArrayList PeriodDate = new ArrayList(); 
      int period = 0; 
      period = dtt2.Rows.Count; 
      HtmlTableRow tableRowhead = new HtmlTableRow(); 
      HtmlTableCell tableCellhead = new HtmlTableCell(); 
      // tableCellhead.ColSpan = period + 2; 

      Label lblHead = new Label(); 
      lblHead.ForeColor = System.Drawing.Color.Red; 
      tableCellhead.Controls.Add(lblHead); 

      tableRowhead.Controls.Add(tableCellhead); 
      tbltt.Controls.Add(tableRowhead); 
      HtmlTableRow tableRow = new HtmlTableRow(); 
      tableRow.BgColor = "#0272A8"; 
      tableRow.Height = "32"; 
      HtmlTableCell tableCell1 = new HtmlTableCell(); 
      tableCell1.Width = "75px"; 
      Label lbl = new Label(); 
      lbl.Text = " Date"; 
      lbl.Font.Size = 12; 
      lbl.Font.Bold = true; 
      lbl.ForeColor = System.Drawing.Color.White; 
      tableCell1.Controls.Add(lbl); 
      tableRow.Controls.Add(tableCell1); 
      dtTimeTable.Columns.Add(); 
      dtTimeTable.Rows.Add(); 

      for (int k = 0; k <= dtt2.Rows.Count; k++) 
      { 
       HtmlTableCell tableCell = new HtmlTableCell(); 
       Label lblPeriodHead = new Label(); 
       if (k < dtt2.Rows.Count) 
        lblPeriodHead.Text = dtt2.Rows[k][0].ToString(); 
       lblPeriodHead.Font.Size = 12; 
       tableCell.Width = "85px"; 
       lblPeriodHead.ForeColor = System.Drawing.Color.White; 
       lblPeriodHead.Font.Bold = true; 
       tableCell.Controls.Add(lblPeriodHead); 
       tableRow.Controls.Add(tableCell); 
       dtTimeTable.Columns.Add(); 
       dtTimeTable.Rows[0][k] = lblPeriodHead.Text; 

      } 
      //done 
      string[] p2 = { "flag", "campusid", "ttid" }; 
      string[] v2 = { "2", campusID.ToString(), ddlTimetable.SelectedValue }; 
      dt = bl.SelectDataTableUsingSp("SP_timetablefinal", p2, v2); 
      if (dt.Rows.Count > 0) 
      { 
       tbltt.Controls.Add(tableRow); 
       for (int m = 0; m < dt.Rows.Count; m++) 
       { 
        HtmlTableRow tableRowday = new HtmlTableRow(); 
        HtmlTableCell tableCellday = new HtmlTableCell(); 

        //---------------------------------- 
        HtmlTableCell tableCelldate = new HtmlTableCell(); 
        Label lbldate = new Label(); 
        lbldate.Text = dt.Rows[m][0].ToString(); 
        lbldate.Font.Size = 9; 
        lbldate.Height = Unit.Pixel(20); 
        tableCelldate.Width = "85px"; 
        lbldate.Height = Unit.Pixel(20); 
        tableCelldate.Controls.Add(lbldate); 
        dtTimeTable.Rows.Add(); 
        dtTimeTable.Rows[m + 1][0] = lbldate.Text; 
        tableCelldate.BorderColor = "Grey"; 

        tableRowday.Controls.Add(tableCelldate); 
        int pds = 0; 

        for (int j = 1; j <= period; j++) 
        { 
         HtmlTableCell tableCells = new HtmlTableCell(); 

         string datet = lbldate.Text; 

         string[] p22 = { "flag", "ttid", "campusid" }; 
         string[] v22 = { "3", ddlTimetable.SelectedValue, campusID.ToString() }; 
         DataTable dtss = bl.SelectDataTableUsingSp("SP_timetablefinal", p22, v22); 
         if (dtss.Rows.Count > 0) 
         { 
          DataTable ddt = new DataTable(); 


          string[] pp = { "flag", "classid", "campusid" }; 
          string[] vv = { "4", ddlclass.SelectedValue, campusID.ToString() }; 
          ddt = bl.SelectDataTableUsingSp("SP_timetablefinal", pp, vv); 
          int count = 0; 
          if (ddt.Rows.Count > 0)//fill subjects 
          { 
           pds = pds + 1; 
           DateTime dat = Convert.ToDateTime(bl.SplitDate(datet)); 
           DropDownList ddlsubjects = new DropDownList(); 
           //ddlsubjects.CssClass = "dropdownMedium"; 

           //ddlsubjects.Attributes.Add("style", "font-style:italic;color: #FF3399; font-size: 10px; border: thin groove #000000;width:300px");  
           //ddlsubjects.Style = "color: #FF3399; font-size: 10px; border: thin groove #000000 "; 
           tableCells.BorderColor = "Grey"; 
           //lbtnPeriodHead1.Text = ""; 
           ddlsubjects.Font.Size = 8; 
           ddlsubjects.ForeColor = System.Drawing.Color.SlateGray; 
           ddlsubjects.Height = Unit.Pixel(20); 
           tableCells.Controls.Add(ddlsubjects); 
           tableRowday.Controls.Add(tableCells); 
           // DropDownList ddlsubjects = (DropDownList)childItem.FindControl("ddlsubjects"); 
           if (count < ddt.Rows.Count) 
           { 
            string[] p5 = { "flag", "classid", "pdsno", "date", "campusid" }; 
            string[] v5 = { "1", ddlclass.SelectedValue, pds.ToString(), dat.ToString(), campusID.ToString() }; 
            DataTable dtb = bl.SelectDataTableUsingSp("[SP_timetablefinalsub]", p5, v5); 
            if (dtb.Rows.Count > 0) 
            { 
             ddlsubjects.DataValueField = "SubjectClassid"; 
             ddlsubjects.DataTextField = "papername"; 
             ddlsubjects.DataSource = dtb; 
             ddlsubjects.DataBind(); 
             ddlsubjects.Items.Insert(0, new ListItem("Select One", "0")); 
             count++; 

             //fill datas in DB 
             DateTime datt = dat; 
             string[] p3 = { "flag", "ttid", "date", "campusid", "pdnum" }; 
             string[] v3 = { "6", ddlTimetable.SelectedValue, datt.ToString(), campusID.ToString(), pds.ToString() }; 
             DataTable d3 = bl.SelectDataTableUsingSp("SP_timetablefinal", p3, v3); 
             if (d3.Rows.Count > 0) 
             { 
              if (d3.Rows[0][0].ToString()!= "0") 
              { 
               ddlsubjects.SelectedValue = d3.Rows[0][0].ToString(); 
              } 
             } 
             //same group in any other class 
             string[] p1 = { "flag", "classid", "fromdate", "todate" }; 
             string[] v1 = { "10", ddlclass.SelectedValue, bl.SplitDate(txtfrmdate.Text), bl.SplitDate(txttodate.Text) }; 
             DataTable dti = bl.SelectDataTableUsingSp("SP_timetablefinal", p1, v1); 
             if (dti.Rows.Count > 0) 
             { 
              for (int s = 0; s < dti.Rows.Count; s++) 
              { 
               if (Convert.ToDateTime(dti.Rows[s]["date"]) == dat) 
               { 
                if (Convert.ToInt16(dti.Rows[s]["periodnum"]) == pds) 
                { 
                 int sss = Convert.ToInt16(dti.Rows[s]["opgroupid"]); 
                 ddlsubjects.SelectedValue = sss.ToString(); 
                 ddlsubjects.Enabled = false; 
                } 
               } 
              } 
             } 
            } 
           } 
          } 
         } 
        } 

        tbltt.Controls.Add(tableRowday); 
       } 
      } 
     } 
    } 

Je veux une méthode pour obtenir le contrôle « ddlsubjects » dynamically.that est que je veux obtenir sa valeur. S'il vous plaît donnez-moi un moyen approprié pour obtenir ceci. Toute aide sera appréciée. Merci.

Répondre

0

Si vous attribuez un ID unique à chaque contrôle (propriété ID), vous pouvez utiliser FindControl pour obtenir ce dont vous avez besoin: http://msdn.microsoft.com/it-it/library/486wc64h.aspx

FindControl trouve par nom ID regardles son niveau d'imbrication, donc:

<control id="name1"> 
    <control id="name1_1"></control> 
    <control id="name1_2"></control> 
    <control id="name1_3"> 
    <control id="name1_3_1">value</control> 
    </control> 
</control> 

Rechercher "name1_3_1" avec:

name1.FindControl("name1_3_1"); //Assuming they are all server-side controls, so runat="server" marked. 

vous donnera "name1_3_1", si elle est présente, sinon null.

Questions connexes