javascript - 如何在 javascript 中获取 CommandArgument 的值?
问题描述
我有一个在屏幕上显示文件列表的gridview。此视图中的列是一个名为 Edit 的 asp 链接按钮。当我单击编辑时,我想在 javascript 函数中获取命令参数的值。
function OnEditClick(s, e)
{
console.log('on edit click fired')
var values = [];
values[0] = "Enter document description";
values[1] = "Edit";
values[3] = e.CommandArgument.ToString();
console.log('slowly but surely getting there from here... '+ values[3])
}
<asp:GridView AlternatingRowStyle-CssClass="gridViewAlternatingRow"
AutoGenerateColumns="False"
DataKeyNames="Id"
HeaderStyle-CssClass="gridViewHeader"
ID="gvDocuments"
ClientInstanceName="gvDocument"
OnRowEditing="OnRowEditing"
RowStyle-CssClass="gridViewRow" runat="server" Caption="DocumentList" CaptionAlign="Right">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton CommandArgument='<%#Bind("Id") %>' CommandName="DocDownload" ID="lnkDownload"
runat="server" Text="Download">
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-HorizontalAlign="Center" HeaderText="ID">
<ItemTemplate>
<asp:Label CssClass="txtAlignCenter" ID="lblId" runat="server" Text='<%#Bind("Id") %>' Width="50px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:Label ID="lblContentType" runat="server" Text='<%#Bind("ContentType") %>' Width="210px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblDescription" runat="server" Text='<%#Bind("Description") %>' Width="380px"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Document Desc">
<ItemTemplate>
<asp:Label ID="lblDocDescription" runat="server" Text='<%#Bind("DocumentDescription") %>' Width="380px">
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" ID="lnkEditButton"
OnClientClick="OnEditClick()"
Text="Edit" CommandName="EditDocument"
CommandArgument='<%#Eval("Id")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
当我使用以下代码时,我在 chrome 控制台中收到一个错误,指出属性 CommandArgument 未定义。错误的确切文本是
未捕获的类型错误:无法读取未定义的属性“CommandArgument”
我的代码中缺少什么?
at OnEditClick (Default.aspx:34)
解决方案
由于您的命令参数是 Id,请尝试将 Id 隐藏字段添加到您的 gridview 列
<asp:TemplateField>
<ItemTemplate>
<span style="display:none"><%# Eval("Id") %></span>
<asp:LinkButton runat="server" Id="lnkEditButton"
OnClientClick="OnEditClick()"
Text="Edit" CommandName="EditDocument"
CommandArgument='<%#Eval("Id")%>'/>
</ItemTemplate>
</asp:TemplateField>
并使用 javascript 在编辑点击时获得价值
var id = $(this).closest("tr").find('span').html();
推荐阅读
- c - 如何在拆分部分中链接 IAR 中更密集的代码?
- excel - 输入框避免空白条目
- javascript - 什么 VM9:7146 crbug/1173575,非 JS 模块文件已弃用。(匿名)@ VM9:7146 错误意味着在 express js 中?我该如何解决?
- angular - Angular 12 NullInjectorError
- python - 无法使用 ssl 连接到我的 rpyc 服务器
- java - 找不到符号 flutterEngine.getPlugins()
- c# - 删除带有文件的 Windows 服务文件夹会引发错误
- matlab - 求解一个矩阵方程,即一个有 16 个未知数的 16 个方程组:调用求解函数时出错
- r - 如何以公里或米为单位找到相邻的经纬度点?
- angular5 - 交易视图中的自定义 go_to_date