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'));

这只是一个自定义字段名称