我有一个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>
答案 0 :(得分:1)
您已提供了自己的选择按钮,并将属性http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogenerateselectbutton.aspx设置为true。你必须只选择其中一个。
编辑:啊,现在看。标签'testLabel'在updatepanel之外。将其移至ContentTemplate。答案 1 :(得分:0)
您是否尝试将 testLabel 放在另一个UpdatePanel中并在更改标签文本后对其进行更新?
答案 2 :(得分:0)
从它的外观来看,它应该是有效的。以下是一些指示:
row.Cells[2].Text
时,请记住索引是基于零的(第一个单元格索引为0)。DefaultGrid_SelectedIndexChanged
内放置一个断点。当它到达那里时,通过观察变量和调用方法来愚弄可能性。这应该会对你有所帮助。答案 3 :(得分:0)
我怀疑你的DefaultGrid_SelectedIndexChanged
被召唤了。检查一下:http://forums.asp.net/t/1448445.aspx
引用:
你需要一个按钮字段或回发控件,例如按钮,linkbutton,imagebutton,其中commandName =“Select”,用于触发selectedIndexChanged事件处理程序。