在当ListView数据绑定控件的模板里的控件使用AjaxPro进行异步调用,并希望调用的时候将绑定的值传给服务器函数,
如:
Code
<asp:ListView ID="lv" runat="server">
<LayoutTemplate>
<div id="itemPlaceholder" runat="server"></div>
</LayoutTemplate>
<ItemTemplate>
<input id="btn" type="button" value="button" onclick="" />
<br />
</ItemTemplate>
<ItemTemplate>
<asp:Label ID="lbl" runat="server" Text='<%# Eval("myColumn") %>' />
<br />
</ItemTemplate>
</asp:ListView> 我想在btn的onclick来进行Ajax调用,并将lbl的参数传回服务器,
在这种情况下,如果直接在btn的onclick中写onclick ='getMsg(<%# Eval("myColumn") %>)'是行不通的,因为getMsg(<%# Eval("myColumn") %>)括号里面的内容是不能被识别的。
所以我想了个方法,(其实也不是很好,以后再想想看)
在数据绑定表之前,在表中添加一列,面列的值通过代码添加,如:
Code
cs:
DataTable dtResult = //从数据库或其他地方获取数据。
dtResult.Columns.Add("strClick");
foreach(DataRow dr in dtResult.Rows)
{
dr["strClick"]="getMsg(\""+dr["myColumn"].ToString()+"\");";
}
lv.DataSource=dtResult;
lv.DataBind(); 然后在页面上将btn的onclick写为
onclick='<%# Eval("strClick") %>
最后在客户端js代码中完成getMsg函数,在getMsg中调用服务器方法。
这样就完成了。