2009-11-30 57 views
0

我有一个显示用户列表的GridView。每个用户都有一个名字,姓氏和其他您希望用户拥有的数据。每个值都通过BoundField暴露。例如,名字可以通过“名字”得到,姓氏可以通过“姓氏”得到。带有多个绑定字段的ASP.NET + DataBinder.Eval

当用户单击我在TemplateField中的LinkBut​​ton时,我需要执行一些JavaScript。这个JavaScript函数需要FirstName和LastName。目前,我正在尝试如下所示:

<asp:LinkButton ID="lbPrompt" runat="server" Text="prompt" CommandName="Prompt" 
    CommandArgument='<%# Eval("UserName") %>' 
    OnClientClick='<%# Eval("FirstName", "LastName", "return askUser(\"{0}\",\"{1}\");") %>' /> 

此声明不起作用,因为Eval方法不接受这种过载。我如何完成这项任务?

感谢

回答

7
<%# String.Format(
     "return askUser(\"{0}\",\"{1}\")", 
     Eval("FirstName"), 
     Eval("LastName")) %> 
0

尝试

OnClientClick='<%# "return askUser(\"" + Eval("FirstName") + "\",\"" + Eval("LastName") + "\");" %>' 

(未经测试)

0

如果您使用的是后面的代码,你可以把它在下面的事件。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     LinkButton lb = e.Row.FindControl("lbPrompt") as LinkButton; 
     if (lb != null) 
     { 
      string firstName = Convert.ToString(DataBinder.Eval(DataBinder.GetDataItem(e.Row), "FirstName")); 
      string lastName = Convert.ToString(DataBinder.Eval(DataBinder.GetDataItem(e.Row), "LastName")); 

      lb.Attributes.Add("OnClick", "javascript:return askUser(" + firstName + ", " + lastName + ")"); 
     } 
    }