如何在Datalist

时间:2016-04-27 13:04:04

标签: c# asp.net webforms hidden-field hiddenfield

我正在获取datalist的帖子。我想展示post id,但我并不完美......

我想用隐藏字段获取帖子ID,任何想法?

我尝试按下按钮:

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

这是有效的,但只是因为Items [0]的第一个隐藏字段,如果你想获得第二个隐藏文件而不是我可以更改项目[1]。

但是我希望这些值能够在datalist中自动生成。 (当我点击帖子的按钮时)

我尝试了foreach函数,但是 它获取了最后一个隐藏字段的值 。所以,我想念一些东西,但我不确定。

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>  

已更新..

2 个答案:

答案 0 :(得分:3)

您希望首先获取DataListItem,然后找到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;
}

答案 1 :(得分:1)

从评论中,您需要在lbl_note中显示所有隐藏字段的ID,因此您必须使用以下内容:

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);  

让ID为001002003标签会将输出显示为001-002-003