2011-09-06 74 views
0

我有一个GridView在其单元格中有文本框。调用JavaScript函数调用文本框的内容。我想向函数传递文本框所属的行的数据键,但不知道如何做到这一点。如何访问数据密钥?

下面给我一个错误信息:

<asp:TextBox ID="txtWFShipDate" runat="server" 
     Text='<%#Eval("StrShipDate") %>' BorderStyle="None" Width="80%" 
     CssClass="date" 
     onchange="JSSaveWorkflowChanges(this, '<%# Eval("BookStemCommon") %>');"> 
</asp:TextBox> 

BookStemCommon是数据键名。

+1

它绝不会伤害到发布错误消息也是。 –

+1

什么是错误信息? –

+0

错误是“服务器标记格式不正确。” – dpreznik

回答

1

尝试这样的:

onchange='<%# string.Format("JSSaveWorkflowChanges(this, \"{0}\");", Eval("BookStemCommon")) %>' 

或使用JavaScriptSerializer正确编码将被传递给JavaScript函数值更好,更安全的方式:

onchange='<%# string.Format("JSSaveWorkflowChanges(this, {0});", new JavaScriptSerializer().Serialize(Eval("BookStemCommon"))) %>' 
+0

谢谢你的回答。我得到一个错误,虽然:错误CS0246:无法找到类型或命名空间名称'JavaScriptSerializer'(你是否缺少使用指令或程序集引用?) – dpreznik

+0

@dpreznik,它在'System.Web.Script .Serialization'命名空间。因此,无论是在它的前缀,还是在web.config中全局定义这个名称空间。另外请确保您已将“System.Web.Extensions.dll”程序集引用到您的项目中。 –

+0

非常感谢。 – dpreznik