带有多个绑定字段的ASP.NET + DataBinder.Eval

时间:2009-11-30 14:53:52

标签: asp.net

我有一个显示用户列表的GridView。每个用户都有一个名字,姓氏和您希望用户拥有的其他数据。每个值都通过BoundField公开。例如,名字可通过“FirstName”获得,姓氏可通过“LastName”获得。

当用户点击我在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方法不接受此类重载。我如何完成这项任务?

由于

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

尝试

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

(未测试的)

答案 2 :(得分: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 + ")");
        }
    }