2016-04-27 4 views
3

Je reçois des messages dans Datalist. Je voudrais montrer l'id de poste mais je ne suis pas parfaitement ..Comment obtenir l'ID dynamique en utilisant HiddenField dans Datalist

Je voudrais obtenir l'identification de poste avec le champ caché, une idée?

J'ai essayé sur le bouton clic:

protected void post_button_Click(object sender, EventArgs e) 
{ 
    HiddenField hiddenField = datalist1.Items[0].FindControl("hfield") as HiddenField; 
    lbl_note.Text = Convert.ToString(hiddenField); 
} 

Cela fonctionne, mais juste pour la première HiddenField à cause des articles [0], si vous voulez vous deuxième hiddenfiled que je peux changer Articles [1 ]

Mais je voudrais que ces valeurs soient automatiquement dans Datalist. (Quand je clique sur le bouton de poste)

J'ai essayé la fonction foreach mais il get dernière valeur du champ caché. Donc, je manque quelque chose mais je ne suis pas sûr.

protected void post_button_Click(object sender, EventArgs e) 
{ 
    foreach (DataListItem item in datalist1.Items) 
    { 
     var hidden_id = int.Parse(((HiddenField)item.FindControl("hfield")).Value); 
     lbl_note.Text = Convert.ToString(hidden_id);    
    } 
} 

DataList1:

<asp:DataList ID="datalist1" runat="server"> 
    <ItemTemplate>     
     <div>  
      <asp:LinkButton ID="post_picture" runat="server" OnClick="post_picture_Click"><img src="~/testing.png" alt=""></asp:LinkButton>  
      <h3><asp:LinkButton ID="post_title" runat="server" OnClick="post_title_Click"><%# Eval("post_title")%></asp:LinkButton></h3> 
      <asp:LinkButton runat="server" ID="post_button" OnClick="post_button_Click" >GO >></asp:LinkButton> 
      <asp:HiddenField ID="hfield" runat="server" Value='<%# Eval("post_id")%>' /> 
     </div> 
    </ItemTemplate> 
</asp:DataList> 

MISE À JOUR ..

+0

ce que vous voulez afficher dans 'lbl_note.Text' –

+0

j'ai @ un-lucky messages sur la page, je voudrais montrer post_id avec le champ caché. – Cagatay

+0

Donc, s'il y a des champs cachés 'n', vous devez afficher les id de tous les' n' hdnfields dans cette étiquette? –

Répondre

3

Vous voulez obtenir DataListItem d'abord, puis trouver hfield.

protected void post_button_Click(object sender, EventArgs e) 
{ 
    var button = sender as LinkButton; 
    var dataListItem = button.Parent as DataListItem; 
    var hfield = dataListItem.FindControl("hfield") as HiddenField; 
    lbl_note.Text = hfield.Value; 
} 
+0

Yeap, je ne pensais pas que .. Merci @Win, ça marche. – Cagatay

1

Depuis le commentaire, vous devez afficher tous les id des champs cachés dans lbl_note si tu dois utiliser quelque chose comme ce qui suit:

List<string> hdnIdList= new List<string>(); 
foreach (DataListItem item in datalist1.Items) 
{ 
    hdnIdList.Add(((HiddenField)item.FindControl("hfield")).Value);      
} 
lbl_note.Text = String.Join("-",hdnIdList); 

Laissez les ID sont 001, 002 et 003 l'étiquette affiche la sortie comme 001-002-003

+0

Eh bien, j'ai essayé, il n'y a pas d'action .. Je ne sais pas pourquoi .. En cliquant sur le bouton du poste sur la page mais pas d'erreur, pas de résultat .. @ un chanceux – Cagatay