2009-11-30 52 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 + ")"); 
     } 
    }