2014-04-20 3 views
0

J'ai quatre colonnes à l'intérieur du répéteur, attendu, accpet, LDD & un panneau qui n'est pas visible à la page chargeComment obtenir la valeur de dropdownlist sur la sélection changée dans le répéteur.

Si Expect valeur de la colonne et la valeur de sélection déroulante est la même alors que je veux visible ce panneau autrement non.

S'il vous plaît aidez-moi je ne reçois pas la valeur de beacuse dropdownlist sur le répéteur de changement de sélection est tout remplissage pas une seule valeur que je suis en mesure d'obtenir. Quelqu'un peut-il m'aider pour cela.

De toute façon possible fera pour moi.

CSS

<style> 
     .main 
     { 
      width: 100%; 
     } 
     .inner 
     { 
      width: 90%; 
     } 
     .fst 
     { 
      width: 20%; 
      float: left; 
     } 
     .scnd 
     { 
      width: 20%; 
      float: left; 
     } 
     .thrd 
     { 
      width: 20%; 
      float: left; 
     } 
     .frth 
     { 
      width: 20%; 
      float: left; 
     } 

     .reset-this 
     { 
      clear:both; 
     } 
    </style> 

HTML

<div class="main"> 
     <div class="inner"> 
      <div class="fst"> 
       Except 
      </div> 
      <div class="scnd"> 
       Accpet 
      </div> 
      <div class="thrd"> 
       DDL 
      </div> 
      <div class="frth"> 
       Panel 
      </div> 
      <div class="reset-this"> 
      </div> 
     </div> 
     <div class="reset-this"> 
     </div> 
     <br /> 
     <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 
      <ItemTemplate> 
       <div class="inner"> 
        <div class="fst"> 
         <asp:Label ID="Label1" runat="server" Text='<%# Eval("Expected") %>'></asp:Label> 
        </div> 
        <div class="scnd"> 
         <asp:Label ID="Label2" runat="server" Text='<%# Eval("accpet") %>'></asp:Label> 
        </div> 
        <div class="thrd"> 
         <asp:DropDownList ID="DropDownList3" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList3_SelectedIndexChanged"> 
          <asp:ListItem Text="Select" Value="-1"></asp:ListItem> 
          <asp:ListItem Text="50"></asp:ListItem> 
          <asp:ListItem Text="51"></asp:ListItem> 
          <asp:ListItem Text="52"></asp:ListItem> 
          <asp:ListItem Text="53"></asp:ListItem> 
          <asp:ListItem Text="100"></asp:ListItem> 
         </asp:DropDownList> 
        </div> 
        <div class="frth"> 
         <asp:Panel ID="Panel1" runat="server"> 
          <asp:DropDownList ID="DropDownList2" runat="server"> 
           <asp:ListItem Text="Succesful"></asp:ListItem> 
          </asp:DropDownList> 
         </asp:Panel> 
        </div> 
        <div class="reset-this"> 
        </div> 
        <br /> 
       </div> 
      </ItemTemplate> 
     </asp:Repeater> 
    </div> 

CodeBehind

protected void Page_Load(object sender, EventArgs e) 
    { 
     GetDAtaset(); 
    } 

    public void GetDAtaset() 
    { 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable("warehouseTable"); 
     dt.Columns.Add(new DataColumn("Expected", typeof(string))); 
     dt.Columns.Add(new DataColumn("accpet", typeof(string))); 
     DataRow dr = dt.NewRow(); 
     dr["Expected"] = "100"; 
     dr["accpet"] = "50"; 
     dt.Rows.Add(dr); 


     DataRow dr1 = dt.NewRow(); 
     dr1["Expected"] = "50"; 
     dr1["accpet"] = "25"; 

     dt.Rows.Add(dr1); 
     ds.Tables.Add(dt); 

     Repeater1.DataSource = ds; 
     Repeater1.DataBind(); 

    } 
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     ((Panel)(e.Item.FindControl("panel1"))).Visible = false; 
    } 

    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     for (int i = 0; i < Repeater1.Items.Count; i++) 
     { 
      Panel pnl_active = Repeater1.Items[i].FindControl("panel1") as Panel; 

      Label Expected = Repeater1.Items[i].FindControl("Label1") as Label; 
      DropDownList DDLValue = Repeater1.Items[i].FindControl("DropDownList3") as DropDownList; 

      if (DDLValue.SelectedItem.ToString() == Expected.ToString()) 
      { 
       pnl_active.Visible = true; 
      } 
     } 
    } 

Répondre

0

Vous devez faire deux choses:

D'abord, ajoutez dans votre méthode Page_Load pour éviter de réinitialiser les valeurs de répéteur:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     GetDAtaset(); 
    } 
} 

Ensuite, modifiez la méthode DropDownList3_SelectedIndexChanged être comme ceci:

protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    for (int i = 0; i < Repeater1.Items.Count; i++) 
    { 
     Panel pnl_active = Repeater1.Items[i].FindControl("panel1") as Panel; 

     Label Expected = Repeater1.Items[i].FindControl("Label1") as Label; 
     DropDownList DDLValue = Repeater1.Items[i].FindControl("DropDownList3") as DropDownList; 

     //You need to compare the SelectedItem.Text with the label Expected.Text 
     if (DDLValue.SelectedItem.Text == Expected.Text) 
     { 
      pnl_active.Visible = true; 
     } 
    } 
} 

Notez que vous compariez la DDLValue.SelectedItem avec l'étiquette prévue, ce qui est inexact car vous avez besoin de comparer les DDLValue.SelectedItem.Text avec l'étiquette Expected.T ext.

Espérons que cela aide.

+0

mais si je suis deebugging alors je trouve que la sélection événement changé ne reçoit pas tiré. –

+0

même après avoir ajouté (! IsPostBack) dans page_load il ne se déclenche toujours pas? –

Questions connexes