Call Javascript from GridView TemplateField
Call Javascript from GridView TemplateField
我有一个GridView,我的代码如下
<asp:TemplateField HeaderText="Item">
<ItemTemplate>
<asp:Button ID="btnItem" OnClientClick="javascript:SearchReqsult(<%#Eval("Id") %>);"
CssClass="Save" runat="server" />
</ItemTemplate>
</asp:TemplateField>
我面临一个运行时错误,表明我的按钮控件格式正确我想以下的问题
OnClientClick="javascript:SearchReqsult(<%#Eval("Id") %>);"
知道吗?
尝试以下代码
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl("btnItem");
btn.Attributes.Add("OnClick","SearchReqsult(this.id);");
}
}
你不能这样做吗?这是数据绑定。也许是这样的:
protected void Page_Load(object sender, EventArgs e)
{
yourGridView.RowDataBound += (s, ev) =>
{
if (ev.Row.RowType == DataControlRowType.DataRow)
{
var btn= (Button) ev.Row.FindControl("btnCheque");
btn.OnClientClick = "javascript:SearchReqsult(" +
DataBinder.Eval(ev.Row.DataItem, "Id") + ");";
}
};
}
尝试用单引号括住javascript函数调用:
OnClientClick='javascript:SearchReqsult(<%#Eval("Id") %>);'
也许问题出在引号缺失/错误上。
用单引号将"id"字段括起来。
只需更换
btn.OnClientClick = "javascript:SearchReqsult(" +
DataBinder.Eval(ev.Row.DataItem, "Id") + ");";
带有
btn.OnClientClick = "javascript:SearchReqsult(" +
DataBinder.Eval(ev.Row.DataItem, 'Id') + ");";
你的代码将作为
protected void Page_Load(object sender, EventArgs e)
{
yourGridView.RowDataBound += (s, ev) =>
{
if (ev.Row.RowType == DataControlRowType.DataRow)
{
var btn= (Button) ev.Row.FindControl("btnCheque");
btn.OnClientClick = "javascript:SearchReqsult(" +
DataBinder.Eval(ev.Row.DataItem, 'Id') + ");";
}
};
}
这就是您需要做的
代码隐藏:
protected void GridView_RowCreated(object sender,GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (((DataRowView)e.Row.DataItem) !=null)
((Button)e.Row.FindControl("btnCheque")).Attributes.Add("onclick","SearchReqsult(" + ((DataRowView)e.Row.DataItem)["productId"].ToString() + ")");
}
}
HTML:
<asp:Button ID="btnCheque" CssClass="Save" runat="server" Text="My Button" />
尝试使用String.Format类
<asp:Button ID="btnCheque" runat="server"
OnClientClick=<%#String.Format("return SearchReqsult('{0}');", Eval("ID")) %> />
将Labe l和bind Id放入其中,并使其可见false。
在GridView RowDatabound事件上,添加attrinute来控制和分配按钮onclientclick事件上的javascript
尝试使用单引号,而不是双引号和字符串。格式化()
<asp:Button ID="btnCheque" OnClientClick=<%# string.Format("javascript:SearchReqsult('{0}');return false;",Eval("id")) %> CssClass="Save" runat="server" />
从模板字段调用javascript函数
<asp:TemplateField HeaderText="Status" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" OnClientClick=<%#String.Format("return dis_status('{0}');", Eval("Status")) %> runat="server" CommandArgument='<%# Eval("AgtId")%>' Text='<%# Eval("Status")%>' CommandName="cmdDelete" />
</ItemTemplate>
相关文章:
- 如何在ContentPlaceHolder DetailsView1 TemplateField EditItemTem
- getElementByID for templateField TextBox
- 当javascript c#asp.net更改值时,如何从TemplateField中的TextBox中获取值
- 如何使用ImageButtons在GridView TemplateField中保留图像超链接的样式/悬停功能
- Call Javascript from GridView TemplateField
- 如何在JavaScript中从GridView's templatefield文本框中获取值
- 如何关闭放置在TemplateField中的modalpopupextender而不使用BehaviorID属性
- 在GridView TemplateField TextBox中,回车键的执行方式与选项卡类似