实现效果:在主表里选中某行,从表里得出该行的详情。
方法1:代码实现。
在页面上放一个gridview,一个detailview。数据绑定gridview并且要设置主键,然后在selectedindexchanged事件写代码:选择发生变化时,detailview也改变为相应的detail。
具体代码:
using system;
using system.data;
using system.configuration;
using system.collections;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.data.sqlclient;
public partial class masterdetail2 : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
if (!page.ispostback)
{
string sql = "select * from [orders]";
gridview1.datasource = binding(sql);
gridview1.datakeynames = new string[] { "orderid" };
gridview1.databind();
}
}
protected void gridview1_selectedindexchanged(object sender, eventargs e)
{
string orderid = convert.tostring(gridview1.selectedvalue);
string sql = "select * from [orderdetails] where [orderid]='" + orderid + "'";
detailsview1.datasource = binding(sql);
detailsview1.databind();
}
/**//// <summary>
/// 执行sql语句返回一个数据表
/// </summary>
/// <param name="sql">所要执行的sql语句</param>
/// <returns>datatable</returns>
protected datatable binding(string sql)
{
sqlconnection myconn = new sqlconnection(configurationmanager.connectionstrings["appconnectionstring1"].connectionstring);
datatable dt=new datatable();
sqldataadapter myadapter = new sqldataadapter(sql, myconn);
myadapter.fill(dt);
return dt;
}
}
方法2:设置控件属性实现
在页面上放一个gridview,一个detailview,然后每个对应一个数据源。只要在detailview的数据源的selectcommand里使用gridview的selectedvalue作为参数,即可实现。
<selectparameters>
<asp:controlparameter controlid="employeesgridview" name="addressid" propertyname="selectedvalue"
type="int32" />
</selectparameters>
两种方法都很简单,方法2基本无代码实现,方法1控制更灵活。
新闻热点
疑难解答
图片精选