我花了整个下午尝试使用 CODE BEHIND 来完成此操作,但没有成功,因此我需要一些 C# 代码。
基本上,我有一个处于主/详细关系的 GV 和 DV。 GV 显示 ID 和名称。如果我单击 GV 行上的“选择”,我想在 DV 中查看其 ID、名称和地址。我知道如何让它在 aspx 文件中以声明方式工作。但在后面的 C# 代码中,我不知道如何继续执行此函数:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Select"))
{
// PLEASE GIVE ME THE CODE HERE TO BIND THE DETAILSVIEW. THANKS!
// I am using a sqldatasource if it makes any difference
}
}
最佳答案
这是一个通用解决方案,向您展示如何实现此目的,请注意,该解决方案并不是非常安全,但我想您会明白它的要点。有什么不清楚的地方请评论。
隐藏代码:
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
GridViewRow selected = gv.Rows[Convert.ToInt32(e.CommandArgument)];
List<ThatClass> cList = new List<ThatClass>();
cList.Add(new ThatClass(selected.Cells[0].Text, selected.Cells[1].Text));
dv.DataSource = cList;
dv.DataBind();
}
}
标记:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" OnRowCommand="gv_RowCommand">
<Columns>
<asp:BoundField DataField="A" HeaderText="A"/>
<asp:BoundField DataField="B" HeaderText="B" />
<asp:CommandField ShowSelectButton="true" />
</Columns>
</asp:GridView>
<asp:DetailsView runat="server" ID="dv">
</asp:DetailsView>
仅供引用:我使用列表绑定(bind) GV:
protected void Page_Load(object sender, EventArgs e)
{
List<ThatClass> cList = new List<ThatClass>();
cList.Add(new ThatClass("123", "abc"));
cList.Add(new ThatClass("456", "def"));
gv.DataSource = cList;
gv.DataBind();
}
关于c# - GridView 和DetailsView 更新DetailsView 背后的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6337786/