我在数据列表中有超链接和隐藏字段,如下所示
<asp:DataList ID="clientsList" runat="server" OnSelectedIndexChanged="clientsList_SelectedIndexChanged1" >
<ItemTemplate>
<asp:HyperLink ID="hlName" runat="server" Text='<%# Bind("Name") %>' NavigateUrl="#" ></asp:HyperLink>
<asp:HiddenField ID="HiddenFieldID" runat="server" Value='<%# Eval("ID") %>' />
</ItemTemplate>
</asp:DataList>
当用户点击任何超链接时,我需要将该值存储在应用程序变量中。但是SelectedIndexChange
事件永远不会发生。
这是我的代码:
protected void clientsList_SelectedIndexChanged1(object sender, EventArgs e)
{
int idx = clientsList.SelectedIndex;
HiddenField hiddenCID = clientsList.Items[idx].FindControl("HiddenFieldID") as HiddenField;
if (hiddenCID != null)
{
Logger.UpdateLog("Selected ID: " + hiddenCID.Value.ToString());
}
}
我正在将数据从数据库绑定到Page_load
事件中的数据列表,如下所示,这很正常。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindDataList();
}
}
知道为什么这个事件永远不会被解雇?
就访问hiddenfield
值而言,我的代码是否正确?
答案 0 :(得分:1)
您是否设置了超链接字段的commandname属性?
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select">Select</asp:LinkButton>
现在使用selectedindexchanged方法:
protected void DataList1_SelectedIndexChanged(object sender, EventArgs e)
{
int idx = DataList1.SelectedIndex;
Label lbl = (Label)DataList1.Items[idx].FindControl("Label1");
int id =Convert.ToInt32(DataList1.SelectedValue);
}
有效吗?