【问题标题】:DataList SelectedIndexChange event not firingDataList SelectedIndexChange 事件未触发
【发布时间】:2014-09-22 17:10:13
【问题描述】:

我在数据列表中有一个超链接和一个隐藏字段,如下所示

<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 值而言,我的代码是否正确?

【问题讨论】:

    标签: c# asp.net datalist


    【解决方案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);
    }
    

    有效吗?

    【讨论】:

    • 我认为您必须使用链接按钮并在数据绑定中绑定Url。
    • 超链接没有“commandName”属性\属性。那么是不是没有“CommandName”属性我们就无法访问datalist中控件的数据?
    猜你喜欢
    • 2014-10-02
    • 2020-05-16
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多