<%#%>绑定表达式的语法问题

idaydayup 2011-12-02 12:55:36
这个绑定表达式怎么写?我这样写总是原样输出,不解析呢
也换了其他几种写法,也是不解析
我先解释下 我的目的是想在点击GridView的更新按钮时调用JS判断输入的值是否合法.
给CheckValue(string1,string2)传递两个参数值(当前行中两个单元格的值),本来想传入个行号,在JS中取值的,但是也是写不对语法.所以就写了两个方法在后台取值,这样写也是不能解析,直接当字符串输出了.
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="True" CommandName="Update"
Text="更新" onclientclick='<%#"return CheckValue("+getAmount(Container.ItemIndex))+getDate(Container.ItemIndex)%>+")"'></asp:LinkButton>
...全文
269 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
idaydayup 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liuqian4243 的回复:]
不需要Return
[/Quote]
CheckValue()这个方法是JS中的啊 不需要return吗?
Ny-6000 2011-12-02
  • 打赏
  • 举报
回复
不需要Return
idaydayup 2011-12-02
  • 打赏
  • 举报
回复
问题解决了,综合了下孟老大和Netzhouxiang的方法,非常感谢你们!
idaydayup 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 netzhouxiang 的回复:]
通过 后台绑定方法

我开始搞错了 你是判断输入内容吧

那么就在 ItemDataBound 事件中写以下内容 这个对的

//就是这样

LinkButton LinkButton2 = e.Item.FindControl("LinkButton2") as LinkButton;
LinkButton2.Attributes.Add("onclientclick ", ……
[/Quote]

呵呵,谢谢Netzhouxiang兄的热情帮助!很难得见到你这么热心的朋友!
你的思路是可行的,不过有点点小的问题:
GridView中只有RowDataBound事件,另外我用的是模板列,编辑状态下的控件似乎在RowDataBound事件触发时还没有生成,在RowEditing事件处理方法中才可以访问到.
您的思路是正确的!
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
反正后台数据绑定事件中实现超简单的
紫魂一号 2011-12-02
  • 打赏
  • 举报
回复
为啥要偷懒呢,后台注册事件不是可以嘛,要么在前台事件里去指定参数比较好。你要传的是当前行的行号还是什么?如果是可以通过事件源找到该行
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
protected void GridViewProject_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//获取行索引
int I=e.Row.RowIndex;
//获取对象
LinkButton LinkButton2 = e.Item.FindControl("LinkButton2") as LinkButton;
//添加 onclientclick 事件
LinkButton2.Attributes.Add("onclientclick ", "return CheckValue('根据行索引获取单元格数据1,根据行索引获取单元格数据2')");

}
}

GridView 的行绑定事件 我刚写的是 ItemDataBound 写错了 好久没用了 就是这个代码了
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
完整答案

ItemDataBound 事件中

//获取行索引
int I=e.Row.RowIndex;
//获取对象
LinkButton LinkButton2 = e.Item.FindControl("LinkButton2") as LinkButton;
//添加 onclientclick 事件
LinkButton2.Attributes.Add("onclientclick ", "return CheckValue('根据行索引获取单元格数据1,根据行索引获取单元格数据2')");

测试过 完全可以 给分吧
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
通过 后台绑定方法

我开始搞错了 你是判断输入内容吧

那么就在 ItemDataBound 事件中写以下内容 这个对的

//就是这样

LinkButton LinkButton2 = e.Item.FindControl("LinkButton2") as LinkButton;
LinkButton2.Attributes.Add("onclientclick ", "return CheckValue("+getAmount(Container.ItemIndex))+getDate(Container.ItemIndex)");
lw402365015 2011-12-02
  • 打赏
  • 举报
回复
楼上真胸猛
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
用后台行绑定事件 指定好 JS方法 哥们 我帮你远程解决吧 联系QQ:200592114
孟子E章 2011-12-02
  • 打赏
  • 举报
回复
GridView使用
Container.DataItemIndex
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
请看 7 8 11楼
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
只有你的数据 是用 GridView 绑定的 不是纯table表格 就可以使用上面我说的方法
例如下面 lblprojectname 是你要的 数据1

你就在 ItemDataBound 绑定事件这么写 就OK

Label lblprojectname= e.Item.FindControl("lblprojectname") as Label;

lblprojectname.text
就是当前绑定数据

<asp:GridView ID="GridViewProject" runat="server" AutoGenerateColumns="False" />
<Columns>
<asp:TemplateField SortExpression="projectname"><ItemTemplate><asp:Label ID="lblprojectname" runat="server" Text='<%# Bind("projectname") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField></Columns> </asp:GridView>
hhh305743261 2011-12-02
  • 打赏
  • 举报
回复
"return 双引号 去掉
idaydayup 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 net_lover 的回复:]
完整的例子
<%@ Page Language="C#" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="s……
[/Quote]
孟老大,您这个表达式的语法是正确的,只是我用的是GridView,在Gridview中没有Container.ItemIndex这个写法啊.不知道在GridView中该怎么绑定呢?
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
如果2个单元格里面的数据 是绑定数据库读取出来的

那么你这个问题就好办了

直接在后台 ItemDataBound 事件中 给 你的LinkButton 赋上 onclientclick 事件 就OK了

后台获取当前行绑定事件的数据 方法

例:

Label lblID = e.Item.FindControl("数据1的ID") as Label;
lblID .Text这就是 你获取的数据内容
LinkButton LinkButton2 = e.Item.FindControl("LinkButton2") as LinkButton;
LinkButton2.Attributes.Add("onclientclick ", "return CheckValue('数据1','数据2');");

这样 就完事了

数据1 数据2 你自己在绑定事件中获取 获取例子 上面有
「已注销」 2011-12-02
  • 打赏
  • 举报
回复
请问 2个单元格参数是后台控件绑定的吗
ganlu423 2011-12-02
  • 打赏
  • 举报
回复
可以 放一个hidden控件, 传 this 参数,通过this参数的ID 取得hidden的值
孟子E章 2011-12-02
  • 打赏
  • 举报
回复
完整的例子
<%@ Page Language="C#" EnableViewState="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

void bind()
{
System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow dr;

dataTable1.Columns.Add(new System.Data.DataColumn("Count1", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("Count2", typeof(System.String)));
Random r = new Random();
for (int i = 0; i < 8; i++)
{
dr = dataTable1.NewRow();
dr[0] = r.Next(0, 100);
dr[1] = "AAAAAAAAAAAAAAAAAAAAA";
dataTable1.Rows.Add(dr);
}

this.GridView1.DataSource = dataTable1;
this.GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bind();
}
}

public String getAmount(int x)
{
return "测试内容" + x.ToString();
}
public String getDate(int x)
{
return "2011-11-" + x.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type="text/javascript">
function CheckValue(a,b) {
alert(a + "\r\n" + b);
return false;
}
</script>
</head>
<body>

<form id="form1" runat="server">
<asp:Repeater ID="GridView1" runat="server">

<ItemTemplate>

<asp:LinkButton ID="LinkButton2" runat="server" Text="更新"
onclientclick=<%# "return CheckValue('" + getAmount(Container.ItemIndex) + "','" + getDate(Container.ItemIndex)+ "')" %>>
</asp:LinkButton>
</ItemTemplate>

</asp:Repeater>
</form>
</body>
</html>
加载更多回复(2)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧