GridView和DetailsView代码隐藏更新DetailsView
问题描述:
我花了整整一个下午的时间尝试使用CODE BEHIND来做到这一点,但没有成功,所以我需要一些C#代码。GridView和DetailsView代码隐藏更新DetailsView
基本上,我有一个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>
FYI:我使用绑定列表中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();
}
谢谢你这么多@Dennis。这正是我需要开始重写我的代码! – user776676 2011-06-14 15:49:44