如何在 Datalist 中使用 HiddenField 获取动态 id
How to get dynamic id using HiddenField in Datalist
我在数据列表中得到 posts。我想显示 post id,但我并不完美..
我想获得 post 带隐藏字段的 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] 而仅适用于第一个隐藏字段,如果你想获得第二个隐藏字段,我可以更改 Items[1]。
但我想让这些值自动出现在数据列表中。 (当我点击 post 的按钮时)
我试过 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);
}
}
数据列表 1:
<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>
已更新..
根据评论,您需要在 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 为 001
、002
和 003
标签将显示输出为 001-002-003
你想先获取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;
}
我在数据列表中得到 posts。我想显示 post id,但我并不完美..
我想获得 post 带隐藏字段的 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] 而仅适用于第一个隐藏字段,如果你想获得第二个隐藏字段,我可以更改 Items[1]。
但我想让这些值自动出现在数据列表中。 (当我点击 post 的按钮时)
我试过 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);
}
}
数据列表 1:
<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>
已更新..
根据评论,您需要在 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 为 001
、002
和 003
标签将显示输出为 001-002-003
你想先获取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;
}