0

好的,所以我对 html 和网络非常陌生。现在,我正在尝试动态生成列表项,然后将它们发送回 Web 服务器,这样我就知道这个人想要获取什么。

这是生成列表项的代码:

foreach (var item in dataList) {
    MyDataList.InnerHtml += "<li><a runat='server' onclick='li_Click' id='" + item.Name + "-button'></a></li>";
}

再往下我有我的点击事件。

protected void li_Click(object sender, EventArgs e) {
    //How do I determine here which item was actually clicked?
}

我的问题是如何确定单击了哪个列表项?

顺便说一句,后面运行的代码是 C#。

编辑 1

LinkButton link = new LinkButton();
link.ID = "all-button";
link.Text = "All";
link.Click += new EventHandler(link_Click);
MyDataList.Controls.Add(link);

然后在下面我有我的 link_Click 事件,它似乎永远不会遇到断点。

void link_Click(object sender, EventArgs e) {
    if (sender != null) {
        if (sender.GetType() == typeof(LinkButton)) {
            LinkButton button = (LinkButton)sender;
            if (button.ID == "all-button") {

            }
        }
    }
}

我知道这必须是可能的,我只是无法弄清楚我错过了什么。

编辑 2

好吧好吧我想我知道问题是什么。我试图在另一个列表中添加第二个列表。这导致整个事情出现问题。它现在正在工作。

4

2 回答 2

2

这是一个使用链接按钮的示例。

代码背后:

for (int i = 0; i < 10 ; i++)
{
    LinkButton link = new LinkButton() { ID = "link_" + i };
    link.Text = "Link " + i;
    link.Click+=new EventHandler(link_Click);
    this.Form.Controls.Add(link);
}

protected void link_Click(object sender, EventArgs e)
{
    //Every time a link is clicked it will get here in the server side
}

祝你好运!

于 2012-07-02T22:36:32.400 回答
-1

你可以很容易地做到这一点

onclick='li_Click(this)'

编辑:-
在编辑内容之后,
您必须在 pageLoad() 中创建服务器端的所有控件才能在服务器端获取点击事件..还需要更多客户端脚本..
我认为你会更好调用 javascript 函数,然后使用 $.get 或 $.post 将数据发送回服务器

于 2012-07-02T22:25:14.287 回答