【问题标题】:How to select a row in data GridView and populate another gridview?如何在数据 GridView 中选择一行并填充另一个 gridview?
【发布时间】:2014-06-06 17:03:17
【问题描述】:

这可能是一个重复的问题,但我没有找到任何对我有帮助的解决方案。于是单独再问。如果有人为我提供任何解决方案,我将不胜感激。

我想显示一个数据网格视图,只需选择该数据的任何行,另一个网格视图将使用该选定的行值填充。

     <div>
        <table align="center" cellpadding="1" cellspacing="1" width="950px">
            <tr>
                <td>
                    <asp:GridView ID="GridView1" runat="server"></asp:GridView>
                </td>
                <td>
                    <asp:GridView ID="GridView2" runat="server"></asp:GridView>
                </td>
            </tr> 
        </table>
    </div>

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    GetAccounts()
End Sub

Protected Sub GetAccounts()
    Dim objCommand As SqlCommand
    Dim objAdapter As SqlDataAdapter
    Dim objDataSet As DataSet
    sqlString = "SELECT * FROM hanger"

    objCommand = New SqlCommand(sqlString, conn)
    objAdapter = New SqlDataAdapter(objCommand)
    objDataSet = New DataSet()
    objAdapter.Fill(objDataSet)
    GridView1.DataSource = objDataSet
    GridView1.DataBind()

    If conn.State = ConnectionState.Open Then : conn.Close() : End If
End Sub

【问题讨论】:

  • 尝试执行您所要求的操作的代码在哪里?
  • @Plutonix 我第一次这样做,所以不知道从哪里开始!对此感到抱歉。
  • OnSelectRowCommand 获取当前选定的行详细信息,使用这些详细信息创建表并将此表设置为第二个网格的数据源

标签: html asp.net vb.net gridview


【解决方案1】:

这里我给你一个非常通用的解决方案,你可以从这里得到想法并实现你自己的代码。

ASP 标记

使用了 Dummy LinkBut​​ton,以便呈现 ASP.Net __doPostBack JavaScript 函数,因为我们需要它来通过提高 PostBack 使行可点击。

<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
    runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound"
    OnSelectedIndexChanged="OnSelectedIndexChanged">
    <Columns>
        <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width="150" />
    </Columns>
</asp:GridView>
<asp:LinkButton ID="lnkDummy" runat="server"></asp:LinkButton>

代码背后

页面加载事件处理程序

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Dim dt As New DataTable()
        dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id"), New DataColumn("Name"), New DataColumn("Country")})
        dt.Rows.Add(1, "John Hammond", "United States")
        dt.Rows.Add(2, "Mudassar Khan", "India")
        dt.Rows.Add(3, "Suzanne Mathews", "France")
        dt.Rows.Add(4, "Robert Schidner", "Russia")
        GridView1.DataSource = dt
        GridView1.DataBind()
    End If
End Sub

GridView1 的 OnRowDataBound 事件处理程序

Protected Sub OnRowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onclick") = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" & e.Row.RowIndex)
        e.Row.Attributes("style") = "cursor:pointer"
    End If
End Sub

GridView1 的 OnSelectedIndexChanged 事件处理程序

Protected Sub OnSelectedIndexChanged(sender As Object, e As EventArgs)
    Dim index As Integer = GridView1.SelectedRow.RowIndex
    Dim name As String = GridView1.SelectedRow.Cells(0).Text
    Dim country As String = GridView1.SelectedRow.Cells(1).Text

    //Extract the Row Identifier And Bind The Second GridView Here
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多