Asp.net OnClientClick 显示 table 中其他单元格的值
Asp.net OnClientClick show value from other cell in table
我在 table 中有以下 ASP 转发器:
<asp:Repeater ID="rptPage" runat="server" OnItemCommand="rptPage_ItemCommand" OnItemDataBound="rptPage_ItemDataBound">
<ItemTemplate>
<tr>
<td id="ArticleTitle">
<%# DataBinder.Eval(Container.DataItem,"Title") %>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem,"AuthorName") %>
</td>
<td>
<asp:Button ID="EditButton" runat="server" CommandName="edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Edit" />
</td>
<td>
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
</td>
<td>
<a href="<%# String.Format("/news/Article={0}", processTitle(Eval("Title"))) %>">View Here</a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
一切正常。
删除功能上有个确认按钮,使用方法如下:
function fnConfirmDelete(ArticleTitle)
{
return confirm("Delete Article " + ArticleTitle);
}
现在,我要做的是传递来自以下内容的文本:
<%# DataBinder.Eval(Container.DataItem,"Title") %>
进入确认框。
我尝试添加一个 'name' 字段:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" name='<%# DataBinder.Eval(Container.DataItem,"Title") %>'/>
但这不会显示名称字段中的文本,而是某种服务器端更改。
我也试过将值传递给 JavaScript 函数:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete('<%# DataBinder.Eval(Container.DataItem,"Title") %>')" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
但这表示服务器标记格式不正确。
我也曾尝试从具有值的单元格中传递一个 id,但服务器标签的格式仍然不正确。
有谁知道我怎样才能做到这一点?
此外,一旦我将其传递给 JavaScript 函数,我将如何检索该值?
编辑:
我试过了:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete('"<%# DataBinder.Eval(Container.DataItem,"Title") %>"')" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
正如下面@Reddy 所建议的,但它也给出了服务器标记格式不正确的错误。
问题出在你的OnClientClick上,改成这个。
OnClientClick="return fnConfirmDelete('"<%# DataBinder.Eval(Container.DataItem,"Title") %>"')"
Try this:
<asp:Button ID="DeleteButton" runat="server" OnClientClick='<%# "return fnConfirmDelete(" + Eval("Title") + ");" %>'
CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
问题是当使用转发器时,转发器会为名称字段分配一个值,所以我存储在那里的任何内容都会被分配的名称字段覆盖。
因此,我将变量存储在 title
中,现在按预期显示:
<asp:Button ID="DeleteButton" runat="server" title='<%# DataBinder.Eval(Container.DataItem,"Title") %>' OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
编辑:
然后我可以使用 JQuery 检索元素,如下所示:
function fnConfirmDelete(ArticleTitle)
{
return confirm("Delete Article: " + $(ArticleTitle).attr('id'));
}
一个问题,由于某种原因,JQuery 无法检索元素 'title' 例如:
return confirm("Delete Article: " + $(ArticleTitle).attr('title'));
但是如果我将字段重命名为 LinkTitle
一切正常:
<asp:Button ID="DeleteButton" runat="server" LinkTitle='<%# DataBinder.Eval(Container.DataItem,"Title") %>' OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
return confirm("Delete Article: " + $(ArticleTitle).attr('LinkTitle'));
这只是一个自定义字段名称
我在 table 中有以下 ASP 转发器:
<asp:Repeater ID="rptPage" runat="server" OnItemCommand="rptPage_ItemCommand" OnItemDataBound="rptPage_ItemDataBound">
<ItemTemplate>
<tr>
<td id="ArticleTitle">
<%# DataBinder.Eval(Container.DataItem,"Title") %>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem,"AuthorName") %>
</td>
<td>
<asp:Button ID="EditButton" runat="server" CommandName="edit" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Edit" />
</td>
<td>
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
</td>
<td>
<a href="<%# String.Format("/news/Article={0}", processTitle(Eval("Title"))) %>">View Here</a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
一切正常。
删除功能上有个确认按钮,使用方法如下:
function fnConfirmDelete(ArticleTitle)
{
return confirm("Delete Article " + ArticleTitle);
}
现在,我要做的是传递来自以下内容的文本:
<%# DataBinder.Eval(Container.DataItem,"Title") %>
进入确认框。
我尝试添加一个 'name' 字段:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" name='<%# DataBinder.Eval(Container.DataItem,"Title") %>'/>
但这不会显示名称字段中的文本,而是某种服务器端更改。
我也试过将值传递给 JavaScript 函数:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete('<%# DataBinder.Eval(Container.DataItem,"Title") %>')" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
但这表示服务器标记格式不正确。
我也曾尝试从具有值的单元格中传递一个 id,但服务器标签的格式仍然不正确。
有谁知道我怎样才能做到这一点?
此外,一旦我将其传递给 JavaScript 函数,我将如何检索该值?
编辑:
我试过了:
<asp:Button ID="DeleteButton" runat="server" OnClientClick="return fnConfirmDelete('"<%# DataBinder.Eval(Container.DataItem,"Title") %>"')" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
正如下面@Reddy 所建议的,但它也给出了服务器标记格式不正确的错误。
问题出在你的OnClientClick上,改成这个。
OnClientClick="return fnConfirmDelete('"<%# DataBinder.Eval(Container.DataItem,"Title") %>"')"
Try this:
<asp:Button ID="DeleteButton" runat="server" OnClientClick='<%# "return fnConfirmDelete(" + Eval("Title") + ");" %>'
CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
问题是当使用转发器时,转发器会为名称字段分配一个值,所以我存储在那里的任何内容都会被分配的名称字段覆盖。
因此,我将变量存储在 title
中,现在按预期显示:
<asp:Button ID="DeleteButton" runat="server" title='<%# DataBinder.Eval(Container.DataItem,"Title") %>' OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
编辑: 然后我可以使用 JQuery 检索元素,如下所示:
function fnConfirmDelete(ArticleTitle)
{
return confirm("Delete Article: " + $(ArticleTitle).attr('id'));
}
一个问题,由于某种原因,JQuery 无法检索元素 'title' 例如:
return confirm("Delete Article: " + $(ArticleTitle).attr('title'));
但是如果我将字段重命名为 LinkTitle
一切正常:
<asp:Button ID="DeleteButton" runat="server" LinkTitle='<%# DataBinder.Eval(Container.DataItem,"Title") %>' OnClientClick="return fnConfirmDelete(this)" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"ID") %>' Text="Delete" />
return confirm("Delete Article: " + $(ArticleTitle).attr('LinkTitle'));
这只是一个自定义字段名称