问题继续:麻烦解答。

2025-01-01 14:57:35
推荐回答(1个)
回答1:

  DataList的ItemCommand事件,是由模板里的Button控件触发,所以你那样做不行。
  解决办法,就是为使用ClientScript.GetPostBackEventReference方法为模板里的Button生成用户回发页面的脚本,并做为函数传给zConfirm去调用。具体如下:
  前台代码:
  
    ID="DataList1" runat="server" DataKeyField="DID"
  DataSourceID="SqlDataSource1" onitemcommand="DataList1_ItemCommand"
  onitemdatabound="DataList1_ItemDataBound">
  
  DID:
  ' />
  

  DName:
  ' />
  

  '>测试
  

  

  

  后台代码:
  protected void Page_Load(object sender, EventArgs e)
  {

  }

  protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
  {
  LinkButton btn = e.Item.FindControl("LinkButton1") as LinkButton;
  if (btn != null)
  {
  string js = "return zConfirm(function(){" + this.ClientScript.GetPostBackEventReference(btn, null) + ";});";
  btn.Attributes.Add("onclick", js);
  }
  }
  protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
  {
  if (e.CommandName == "dosomthing")
  Response.Write(e.CommandArgument.ToString());
  }

  这个例子的效果可以实现:
  第一:显示你的js对话框,第二,触发DataList的ItemCommand事件,然后在后台使用Response.Write将所点击LinkButton对应的DID在页面上显示出来。