Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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
C# 如何在asp.net中的DataView网格行上创建以行索引为参数的onclick处理程序?_C#_Javascript_Asp.net_Gridview - Fatal编程技术网

C# 如何在asp.net中的DataView网格行上创建以行索引为参数的onclick处理程序?

C# 如何在asp.net中的DataView网格行上创建以行索引为参数的onclick处理程序?,c#,javascript,asp.net,gridview,C#,Javascript,Asp.net,Gridview,我有一个ASP.net dataview网格,我希望每一行都有一个用onclick属性和光标指针编写的函数 编译文件并在浏览器中打开时,行应如下所示: <tr onclick = 'update( 1 )'> <td>..... </td> </tr> <tr onclick = 'update ( 2 )' <td>..... </td> </tr> ..... 相反,为什么不能在datag

我有一个ASP.net dataview网格,我希望每一行都有一个用onclick属性和光标指针编写的函数

编译文件并在浏览器中打开时,行应如下所示:

<tr onclick = 'update( 1 )'>
<td>..... </td>

</tr>

<tr onclick = 'update ( 2 )' 
<td>..... </td>

</tr>

..... 

相反,为什么不能在datagridview的
SelectedIndexChanged()
事件中写入所需的功能?您还可以像这样设置所选索引的样式

<SelectedItemStyle Font-Size="10px" Font-Names="Verdana" HorizontalAlign="Left" ForeColor="Black" VerticalAlign="Middle" BackColor="Gold"></SelectedItemStyle>

您可以在Gridview的
行数据绑定事件中执行此操作

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Attributes.Add("onclick", "javascript:alert('Hello');");
        e.Row.Style.Add("cursor", "pointer");         
    }
}

您可以在RowDataBound事件中使用e.Row访问tr,使用e.Row.RowIndex访问索引。如果要访问对象的真实Id或旧值,可以使用e.Row.DataItem访问绑定数据

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow )
    {            
        var theItem = e.Row.DataItem as MyItemType;
        e.Row.Attributes.Add("onclick","update('" + e.Row.RowIndex + "')");
        e.Row.Style.Add("cursor", "pointer"); 
    }
}

对于行集合,索引从0开始,因此如果希望索引从1开始,则需要将1添加到行索引中。

此onclick事件。。这是否指向自定义javascript函数?意思
update(1)
是客户端javascript函数吗

当单击一行datagridview时,您希望执行一些服务器端操作。。这就是方法

  • 将select命令列添加到datagridview:这将允许用户选择一行
  • 在datagridview的onSelectedIndexChanged事件处理程序中编写所需操作
  • 下面是gridview的aspx

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="Id" DataSourceID="SqlDataSource1" 
        EmptyDataText="There are no data records to display." BackColor="White" 
        BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" 
        ForeColor="Black" GridLines="Vertical" 
        onselectedindexchanged="GridView1_SelectedIndexChanged">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" 
                SortExpression="Id" />
            <asp:BoundField DataField="UserId" HeaderText="UserId" 
                SortExpression="UserId" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" />
        </Columns>
        <FooterStyle BackColor="#CCCCCC" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="#CCCCCC" />
    </asp:GridView>
    
    
    
    注意
    列中的
    标记

    您的事件处理程序将类似于。。。
    
    受保护的void GridView1\u SelectedIndexChanged(对象发送方,事件参数e)
    {
    //你想在这里写什么就写什么
    }
    

    您的问题不清楚,请详细说明。代码已被网站删除,现在已清晰。简单明了。忘记您可以在OnRowDataBound事件中访问行的属性。但是,OP表示他希望从1开始计数,而你的将从0开始计数。您还需要提供代码,确保当鼠标悬停在Tr上时,它是一个光标。OP希望在单击行的任意位置时,能够使用客户端脚本更新行。您通过添加一个按钮来更改UI,并在服务器端执行更新。@PHeiberg问题是“在asp.net中的DataView网格行上,如何使用行索引作为参数进行onclick?”。。。该描述在任何时候都不意味着正在研究的是客户端解决方案。。。这就是为什么我提到这是后一种翻译的解决方案。但是,此代码会转换为javascript。除非我缺少一些基本的东西,否则您的解决方案将发出的唯一javascript代码是ASP.NET为update按钮生成的代码,但不会调用OP的更新脚本。简而言之,OP需要客户端执行,这个答案提供服务器端执行。@PHeiberg-我同意这个答案提供服务器端执行的事实。它确实明确指出了这一点。但是说OP的问题暗示了这一点是不正确的,更不用说明确指出这是一个客户端执行,它没有调用服务器端功能。这就是这个答案的实际作用。生成的客户端脚本处理突出显示正确行的UI更新,同时发生回发以执行任何逻辑操作。确定,已授予。问题不是那么清楚。我基于OP的预期输出进行假设。我可以更改鼠标悬停所在行的颜色吗?