asp.net将gridview数据复制到文本框而不回发(vb)

时间:2015-01-05 14:13:28

标签: gridview postback

我在asp.net应用程序中有一个gridview,数据来自MySQL数据库。

每个gridview行有超过50个字段,其中大部分都是隐藏的,因此在gridview上实际只显示了5个。

当您单击任何行时,gridview上行的所有列上的数据将被复制到gridview下面的各个文本框中。

一切正常但是每当我点击一行时都会出现,有一个回发到服务器,这使得下面显示数据的过程相当慢。

我想将gridview行上每个单元格的数据直接复制到相应的文本框,无需进一步的服务器干预。由于我需要的所有数据都在gridview上(只是隐藏),所以我没有看到每次点击一行时都必须检查服务器。

如何在不必每次都进行回发的情况下将数据复制到文本框?

这是我用来将数据从gridview复制到文本框的代码(部分):

         Protected Sub Gridview1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged

             txtOD_OCC.Text = GridView1.SelectedRow.Cells(17).Text.ToString()
             txtOC_OCC.Text = GridView1.SelectedRow.Cells(18).Text.ToString()
        etc....

End Sub

1 个答案:

答案 0 :(得分:1)

您应该使用Javascrip(在我的示例JQuery中)获取Client中的值并将其放在Textboxes中:
gridView有一个ID和一个属性ClientIDMode,导致该ID在Render中没有变化:

 <asp:GridView ID="grdEmployees" ClientIDMode="Static" AutoGenerateColumns="false" runat="server">
                    <Columns>
                        <asp:BoundField HeaderText="Name" DataField="Name" />
                        <asp:BoundField HeaderText="LastName" DataField="LastName"/>
                        <asp:BoundField HeaderText="Phone" DataField="Phone"/>
                    </Columns>
                </asp:GridView> 

之后,添加下一个JQuery功能:

<script type="text/javascript">
        $(document).ready(function () {
            $("#grdEmployees tr").click(function () {
                $(this).find('td').each(function (e) {
                    alert($(this).text());
                });
            });
        });
    </script>

此javascript将事件添加到“#grdEmployees tr”中的Click(当单击TR -row-时)。当此事件触发时,使用javascript获取gridview中的每个TD列(呈现为表格)并显示值。