在一个Web窗体中有:
一个dropdownlist下拉条:ddlField,绑定可以选择的内容有“线路代码”和“线路名称”,他们的value分别为linecode,linename
一个textbox :txtValue
还有一个可以点击的“查找”btnSearch控件
在一个web窗体中两个dataGrid,一个主表grdMain ,一个从表grdDetail 。在grdMain中设置了一个模板列“线路名称”,点击模板列后grdDetail中显示相应的明细记录
首次进入页面时加载数据,从表grdDetail是根据主表grdMain来过滤的,也就是在grdMaster中的行大于零时才会产生grdDetail,在grdDetail中显示的是grdMaster第一行记录的明细 可以在下拉单中选择“线路代码”或是“线路名称”,再在txtValue中输入查找过滤的条件,然后点击btnSearch查找,查找后两个数据表格显示相应的记录。
出错的地方:刚进入页面的时候没有点击任何的模板列,只是直接在主表中翻到第2页,此时我的从表grdDetail中相应地显示出主表第二页第一条记录的明细。但是当我也让从表翻页的时候,主表自动返回到第一页!!这到底是为什么呀?该怎么改?能给点建议吗? 还有就是当我点击模板列从表显示相应的数据后,我再点击主表翻页,从表不会跟着显示主表当前页的第一行明细,而是保持上一次点击的模板列的明细!! 代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
//首次加载数据
if (Request["cp"]!=null)
{
currentPage =Convert.ToInt32(Request["cp"]);
}
if (!IsPostBack)
{BindData();
}
}
private void BindData()
{
ReportQuery reportQuery = new ReportQuery();
DataSet dataSet = null;
if (Session["Condition1"] == null)
{
dataSet = reportQuery.GetAllDeliveryBillMaster();
}
else
{
dataSet =reportQuery.GetDeliveryBillByConditionMaster(Session["Condition1"].ToString());
}
grdMain.CurrentPageIndex = currentPage;
grdMain.DataSource = dataSet.Tables["tblMaster"].DefaultView;
grdMain.DataBind();
//如果主表记录条数 > 0,从表则显示第一条记录的明细
if(dataSet.Tables.Count > 0)
{
if(dataSet.Tables["tblMaster"].Rows.Count > 0)//或者主表点击了翻页
{
string lineCode = Request["LINECODE"];
ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.Items[0].Cells[1].Text.ToString());
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
//当客户端发送请求时,从表显示所选线路的明细,且主表保持当前页
if(Request["LINECODE"]!=null)
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
ViewState["Condition2"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
{
ViewState["Condition2"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
// ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.SelectedItem.Cells[1].Text.ToString()); //所选行记录对应的线路代码
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
dataSet.Tables["tblDetail"].DefaultView.RowFilter = "LINECODE='" + lineCode + "'";
}
grdDetail.DataSource= dataSet.Tables["tblDetail"].DefaultView;
grdDetail.DataBind();
}
}
//当主表没记录时,从表也无记录
// else
// {
// grdDetail.DataSource=null;
// grdDetail.DataBind();
// }
}
private void btnSearch_Click(object sender, System.EventArgs e)
{
if (txtValue.Text.Trim().Length == 0 && Session["Condition1"] != null)
Session.Remove("Condition1");
else
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
Session["Condition1"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
Session["Condition1"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
grdMain.CurrentPageIndex = 0;
grdDetail.CurrentPageIndex = 0;
BindData();
} private void grdMain_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdMain.CurrentPageIndex = e.NewPageIndex;
currentPage = e.NewPageIndex;
BindData();
} private void grdDetail_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdDetail.CurrentPageIndex = e.NewPageIndex;
BindData();
} }
}希望没有把大家吓倒!
一个dropdownlist下拉条:ddlField,绑定可以选择的内容有“线路代码”和“线路名称”,他们的value分别为linecode,linename
一个textbox :txtValue
还有一个可以点击的“查找”btnSearch控件
在一个web窗体中两个dataGrid,一个主表grdMain ,一个从表grdDetail 。在grdMain中设置了一个模板列“线路名称”,点击模板列后grdDetail中显示相应的明细记录
首次进入页面时加载数据,从表grdDetail是根据主表grdMain来过滤的,也就是在grdMaster中的行大于零时才会产生grdDetail,在grdDetail中显示的是grdMaster第一行记录的明细 可以在下拉单中选择“线路代码”或是“线路名称”,再在txtValue中输入查找过滤的条件,然后点击btnSearch查找,查找后两个数据表格显示相应的记录。
出错的地方:刚进入页面的时候没有点击任何的模板列,只是直接在主表中翻到第2页,此时我的从表grdDetail中相应地显示出主表第二页第一条记录的明细。但是当我也让从表翻页的时候,主表自动返回到第一页!!这到底是为什么呀?该怎么改?能给点建议吗? 还有就是当我点击模板列从表显示相应的数据后,我再点击主表翻页,从表不会跟着显示主表当前页的第一行明细,而是保持上一次点击的模板列的明细!! 代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
//首次加载数据
if (Request["cp"]!=null)
{
currentPage =Convert.ToInt32(Request["cp"]);
}
if (!IsPostBack)
{BindData();
}
}
private void BindData()
{
ReportQuery reportQuery = new ReportQuery();
DataSet dataSet = null;
if (Session["Condition1"] == null)
{
dataSet = reportQuery.GetAllDeliveryBillMaster();
}
else
{
dataSet =reportQuery.GetDeliveryBillByConditionMaster(Session["Condition1"].ToString());
}
grdMain.CurrentPageIndex = currentPage;
grdMain.DataSource = dataSet.Tables["tblMaster"].DefaultView;
grdMain.DataBind();
//如果主表记录条数 > 0,从表则显示第一条记录的明细
if(dataSet.Tables.Count > 0)
{
if(dataSet.Tables["tblMaster"].Rows.Count > 0)//或者主表点击了翻页
{
string lineCode = Request["LINECODE"];
ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.Items[0].Cells[1].Text.ToString());
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
//当客户端发送请求时,从表显示所选线路的明细,且主表保持当前页
if(Request["LINECODE"]!=null)
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
ViewState["Condition2"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
{
ViewState["Condition2"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
// ViewState["Condition2"] = string.Format("TBO.LINECODE like '%{0}%'", this.grdMain.SelectedItem.Cells[1].Text.ToString()); //所选行记录对应的线路代码
dataSet =reportQuery.GetDeliveryBillByConditionDetail(ViewState["Condition2"].ToString());
dataSet.Tables["tblDetail"].DefaultView.RowFilter = "LINECODE='" + lineCode + "'";
}
grdDetail.DataSource= dataSet.Tables["tblDetail"].DefaultView;
grdDetail.DataBind();
}
}
//当主表没记录时,从表也无记录
// else
// {
// grdDetail.DataSource=null;
// grdDetail.DataBind();
// }
}
private void btnSearch_Click(object sender, System.EventArgs e)
{
if (txtValue.Text.Trim().Length == 0 && Session["Condition1"] != null)
Session.Remove("Condition1");
else
{
if(this.ddlField.SelectedItem.Text == "线路代码")
{
Session["Condition1"] = string.Format("TBO.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
else
Session["Condition1"] = string.Format("TD.{0} like '%{1}%'", ddlField.SelectedValue, txtValue.Text);
}
grdMain.CurrentPageIndex = 0;
grdDetail.CurrentPageIndex = 0;
BindData();
} private void grdMain_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdMain.CurrentPageIndex = e.NewPageIndex;
currentPage = e.NewPageIndex;
BindData();
} private void grdDetail_PageIndexChanged_1(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
grdDetail.CurrentPageIndex = e.NewPageIndex;
BindData();
} }
}希望没有把大家吓倒!
解决方案 »
- 为什么我用dataset.writexml生成的xml传入sqlserver中解析不了?
- base.OnInit (e);是什么意思
- 求助,菜鸟问题.
- [讨论]两个command语句的本质区别!!!
- ajax页面中数据提交事件处理问题?
- 关于动态生成的控件的状态保存问题?
- 问一个网站栏目组织的问题!
- 怎么在当前页面中给引用过来的用户控件中的下拉列表框赋值???
- SQL数据库比较大!现在要求加一个新字段 a 并全部赋值为"1"应该怎么做啊
- 请问下图片效果中的后端怎么实现的?
- 如何获得XML中某个节点的值,见下面的XML文件,在线等立结贴!
- 怎樣將服務器上的ASP.NET(C#)工程﹐復制一份到本機上開發調試?
不知说得对不对!见笑!