在asp.net C#中动态创建锚标签和onServerClick事件

时间:2015-07-02 10:04:02

标签: c# asp.net dynamic hyperlink creation

我已经通过从数据库中检索员工user_ids创建了一个动态列表,并且所有这些都是链接或者是使用锚标签创建的。我已经为他们分配了id以及​​onServerClick事件。但是点击任何链接,相应的onServerClick函数未执行。 所以帮助。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {int id = 0;
            StringBuilder htmltable = new StringBuilder();
            OracleConnection con = new OracleConnection(oradb);
            OracleCommand cmd = new OracleCommand();
            cmd.CommandText = "select USER_ID from Employee";
            cmd.Connection = con;
            con.Open();
            OracleDataReader dr = cmd.ExecuteReader();
            try
            {
                if (dr.HasRows)
                {
                    htmltable.Append("<table style='width:100%'>");
                    htmltable.Append("<tr><td style='text-align:center'><h3>USER ID</h3></td></tr>");
                    while (dr.Read())
                    {

                        htmltable.Append("<tr>");

                        htmltable.Append("<td style='text-align:center'>" + "<a href='' id = '" + (id++) + "' style='text-decoration:none;' runat='server' onServerClick='determine_id_Click'>" + dr["USER_ID"].ToString() + "</a>" + "</td>");


                        // htmltable.Append("<td>" + dr["TEAM"].ToString() + "</td>");

                        htmltable.Append("</tr>");
                    }
                    htmltable.Append("</table>");
                    PlaceHolder1.Controls.Add(new Literal { Text = htmltable.ToString() });
                }
                else
                {

                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.ToString());
            }
            finally
            {
                con.Close();
            }

        }
    }

protected void determine_id_Click(object sender, EventArgs e)
    {

            //string id = (sender as Control).ClientID;
            //Response.Write("<script>alert(id)</script>");
        Response.Write("Hi");
    }

1 个答案:

答案 0 :(得分:0)

当内容以您正在呈现的方式呈现时,它会在客户端上呈现。这样的超链接在服务器上处理,onserverclick转换为对__doPostBackWebForm_PostBackWithOptions的客户端事件调用,这会导致服务器端回发。您可以通过添加onclick并致电来自行生成此内容。 Page.ClientScript.GetPostBackEventReference