Asp.net 客户端单击显示表中其他单元格的值

Asp.net OnClientClick show value from other cell in table

本文关键字:其他 单元格 net 客户端 单击 显示 Asp      更新时间:2023-09-26

我在表中有以下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") %>

进入确认框。

我尝试添加"名称"字段:

<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") %>"')"

试试这个:

<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 无法检索元素"标题",例如:

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

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