选定行GridView不能提取数据

本文关键字:提取 数据 不能 GridView | 更新日期: 2023-09-27 18:01:19

我有一个GridView,我从我的数据库填充数据。数据显示得很好。我的问题是,我希望能够单击一行,然后在其他地方显示该行中的信息(最终我将有一个分屏来很好地格式化所选数据)。选择成功了,因为它突出显示了当前行。但是,我不知道如何在其他地方显示该数据。现在,我尝试在一个名为testLabel的标签中显示单个单元格的内容。我尝试了许多不同的方法,当我单击新行时,testLabel永远不会更新。有人能看出这里出了什么问题吗?

c#

protected void DefaultGrid_SelectedIndexChanged(Object sender, EventArgs e)
{
    GridViewRow row = DefaultGrid.SelectedRow;
    testLabel.Text = row.Cells[2].Text;
}

ASPX

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID = "ScriptManager" runat="server" />
    <div>
        <div>
            <asp:Label runat="server" id = "orderByLabel" Text = "Order By: " />

            <asp:DropDownList runat="server" ID="orderByList" AutoPostBack="true">
                <asp:ListItem Value="fName" Selected="True">First Name</asp:ListItem>
                <asp:ListItem Value="lName">Last Name</asp:ListItem>
                <asp:ListItem Value="state">State</asp:ListItem>
                <asp:ListItem Value="zip">Zip Code</asp:ListItem>
                <asp:ListItem Value="cwaSource">Source</asp:ListItem>
                <asp:ListItem Value="cwaJoined">Date Joined</asp:ListItem>
            </asp:DropDownList>
        </div>
        <div>
            <asp:Label runat="server" ID="searchLabel" Text="Search For: " />
            <asp:TextBox ID="searchTextBox" runat="server" Columns="30" />
            <asp:Button ID="searchButton" runat="server" Text="Search" />
        </div>
    <div align="center">
    <asp:UpdatePanel ID = "up" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID = "orderByList"
        EventName="SelectedIndexChanged" />
         <asp:AsyncPostBackTrigger ControlId="searchButton" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName"
        onselectedindexchanged = "DefaultGrid_SelectedIndexChanged"
        autogenerateselectbutton = "true"
        selectedindex="0">
        <SelectedRowStyle BackColor="Azure"
        forecolor="Black"
        font-bold="true" />
        <Columns>
            <asp:ButtonField CommandName="Select" Visible="false" />
        </Columns>
        </asp:GridView>
        </ContentTemplate>
        </asp:UpdatePanel>

    </div>
    </div>
    <div>
        <asp:Label runat="server" ID="testLabel" Text="test" />
    </div>
    </form>
</body>
</html>

选定行GridView不能提取数据

您已经提供了自己的选择按钮,并将属性http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogenerateselectbutton.aspx设置为true。您只能选择其中之一。

编辑:啊,现在看到了。标签'testLabel'在updatepanel之外。移动到ContentTemplate

您是否尝试过将testLabel放置在另一个UpdatePanel中并在更改标签的文本后强制更新它?

从它的外观来看,它应该工作。以下是一些提示:

  • 访问row.Cells[2].Text时,请记住索引是基于0的(第一个单元格索引为0)。
  • 你有一个不可见的固定列。虽然没有显示,但该列应该计算在列索引数中。
  • DefaultGrid_SelectedIndexChanged内设置一个断点。当它到达那里时,通过观察变量和调用方法来处理各种可能性。这应该对你有很大帮助。

我怀疑你的DefaultGrid_SelectedIndexChanged是否被调用过。检查这个:http://forums.asp.net/t/1448445.aspx

:

您需要一个按钮字段或回发控件,如按钮,linkbutton,imagebutton与commandName="Select"为selectedIndexChanged事件处理程序触发。