好的,所以我对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
好的我想我知道问题是什么。我试图在另一个列表中添加第二个列表。这导致整个事情出现问题。它现在正在运作。
答案 0 :(得分:2)
以下是使用LinkButtons的示例。
代码背后:
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
}
祝你好运!
答案 1 :(得分:-1)
你可以很容易地做到这一点
onclick='li_Click(this)'
编辑: -
编辑内容后
你必须在pageLoad()中创建服务器端的所有控件以获取服务器端的click事件..还需要更多的客户端脚本..
我认为你最好调用一个javascript函数,然后使用$ .get或$ .post将数据发送回服务器