Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅通过javascript在GridView中通过行单击获取nid_Javascript_Html_Asp.net_Gridview_Onclick - Fatal编程技术网

如何仅通过javascript在GridView中通过行单击获取nid

如何仅通过javascript在GridView中通过行单击获取nid,javascript,html,asp.net,gridview,onclick,Javascript,Html,Asp.net,Gridview,Onclick,我有一种情况,我有一个GridView,它有多个行和列,这些行和列可以很好地绑定并在其中显示数据。代码如下所示: <asp:GridView ID="dgnews" runat="server" AllowPaging="true" AutoGenerateColumns="False" OnRowCommand="dgnews_RowCommand" OnPageIndexChanging="dgnews_PageIndexChanging" OnRowDataBoun

我有一种情况,我有一个GridView,它有多个行和列,这些行和列可以很好地绑定并在其中显示数据。代码如下所示:

<asp:GridView ID="dgnews" runat="server" AllowPaging="true" AutoGenerateColumns="False"
    OnRowCommand="dgnews_RowCommand"  OnPageIndexChanging="dgnews_PageIndexChanging"
    OnRowDataBound="dgnews_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="S.No."  ItemStyle-Width="15px">
            <ItemTemplate>
                <%# Container.DataItemIndex + 1 %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Transfer Date" SortExpression="assetcode" ItemStyle-Width="15%">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "transferdate")%>
            </ItemTemplate>
        </asp:TemplateField>                                      

        <asp:TemplateField HeaderText="Department" ItemStyle-Width="18%">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "departmentname")%>
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField ItemStyle-Width="5px">
            <ItemTemplate>
                <asp:LinkButton ID="lbtnedit" Visible="false" CommandName="edititem" CommandArgument='<%# Eval("nid")%>'
                    ToolTip="Edit" runat="server"><i class="fa fa-fw" ><img src="images/edit.png" alt="" /></i></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>   
    </Columns>                                                    
</asp:GridView>
我得到了点击链接按钮的nid值,如下所示:“value=e.CommandArgument.ToString();”。它很好用

现在我想要的是通过javascript onclick函数调用,在这个网格视图中单击一行来获取这个nid。我的意思是,当我单击一行时,它必须在此行调用一个函数
onclick=“displayHistoryThroughImages(#datainder.Eval(Container.DataItem,'nid'));”

 <asp:GridView ID="dgnews" runat="server" OnRowCommand="dgnews_RowCommand" OnRowDataBound="dgnews_RowDataBound"onclick="displayHistoryThroughImages(#DataBinder.Eval(Container.DataItem,'nid'));">

在javascript中,我必须得到nid liek的以下信息:

protected void dgnews_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "edititem")
    {
        Value = e.CommandArgument.ToString();// And i get the value of id of clicked row link button like this
    }
}
<script>
function displayHistoryThroughImages(nid)
{
    alert("row pressed with nid : "+nid );
}
</script>

函数显示HistoryThroughImages(nid)
{
警报(“用nid按下行:“+nid”);
}

但它不起作用。如何让它工作?我的意思是,我单击一行,它必须使用该行的nid调用函数displayHistoryThroughImages(),并且只能使用javascript。

只需尝试将单击更改为该行即可

onclick='<%#  "javascript:displayHistoryThroughImages('" + Eval("nid") +"')" %>'

它还给出了c#代码中的错误:错误15当前代码中不存在名称“dgnews”context@testtest你需要将onclick分配给LinkButton,而不是网格,这里我们需要得到被点击行的id,当你在gridview上这样做时,你不会得到IDB,但在我的情况下,我必须通过点击该行来获得nid(不是通过点击链接按钮)你有什么解决办法吗?
function displayHistoryThroughImages(nid)
            {

                alert("row pressed with nid : "+nid );
            }