读书人

datalist中嵌套datagrid有关问题,待.

发布时间: 2012-02-08 19:52:21 作者: rapoo

datalist中嵌套datagrid问题,在线等待...
datalist中嵌套datagird,datagrid表只显示对应 "序号 "的行,例如:

-----------------
(datalist中:)
问题序号 问题描述    责任人
1 未加盖公章   李丹
(datagrid中:)
问题序号 扣分标准   扣分
1    漏盖公章   2
1    审批环节违规 3
1    监管失利   1
-----------------
(datalist中:)
问题序号 问题描述    责任人
5 缺少审批项   王五
(datagrid中:)
问题序号 扣分标准    扣分
5    手续不全    3
5    审批流程违规  2

代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
  if(!IsPostBack)
  {
SetBind();
SetBind1();
  }
}
private void SetBind()//绑定datalist
{
  String Con = ConfigurationSettings.AppSettings[ "con "];
  SqlConnection con = new SqlConnection(Con);
  con.Open();
  SqlCommand cmd=new SqlCommand( "select wt_no from wt_shezhi where xm_no= ' "+L5.Text.Trim()+ " ' ", con);
  SqlDataReader g=cmd.ExecuteReader();
  if(g.Read())
{
  a=g[ "wt_no "].ToString();}
  g.Close();
  con.Close();
  SqlDataAdapter da=new SqlDataAdapter();
  da.SelectCommand = new SqlCommand( "select * from wt_shezhi where xm_no= ' "+L5.Text.Trim()+ " ' ", con);
  DataSet ds=new DataSet();
  da.Fill(ds, "table1 ");
  this.DataList1.DataSource=ds.Tables[ "table1 "];
  this.DataList1.DataBind();
}
private void SetBind1()//绑定datagrid
{
  for(int i=0;i <DataList1.Items.Count;i++)
  {
DataGrid DG1=(DataGrid)this.DataList1.Items[i].FindControl( "DG1 ");
String Con = ConfigurationSettings.AppSettings[ "con "];
SqlConnection con = new SqlConnection(Con);
SqlDataAdapter da=new SqlDataAdapter();
     da.SelectCommand = new SqlCommand( "select * from kf_shezhi where wt_no= ' "+a.Trim()+ " ' ", con);
DataSet ds=new DataSet();
da.Fill(ds, "table1 ");
DG1.DataSource=ds.Tables[ "table1 "];
DG1.DataBind();

}
}
但是每个datagrid中显示的是所有 "序号 "的行,不是和datalist相对应 "序号 "的行.
请帮忙...

[解决办法]
在HTML里面的代码:
<asp:repeater id= "Repeater1 " runat= "server ">
<ItemTemplate>
<h2> <%# DataBinder.Eval(Container.DataItem, "CategoryName ") %> </h2>
<asp:DataGrid Runat =server DataSource = ' <%# FilterDate(DataBinder.Eval(Container.DataItem, "CategoryID ")) %> ' ID= "Datagrid1 "/>
</ItemTemplate>
</asp:repeater>
在.cs里面的代码:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

if(!this.IsPostBack)
{
//DataView DV= MyD


MyDS= new DataSet();
LoadProductDataView();
this.Repeater1.DataSource =LoadCategoryDataView();;


this.Repeater1.DataBind();


//MyDS.WriteXml( "C:\\MyXML.xml ");
}
}

private SqlConnection CreateConnection()
{
string ConStr = System.Configuration.ConfigurationSettings.AppSettings[ "newConnectionString "].ToString();
MyConnection =new SqlConnection(ConStr);
return MyConnection;
}
private DataView LoadCategoryDataView()
{
string SqlStr = "select * from Categories ";
MyDataAdapter = new SqlDataAdapter(SqlStr,CreateConnection());
if(CreateConnection().State ==ConnectionState.Closed)
{
CreateConnection().Open();
}
MyDataAdapter.Fill(MyDS, "Categories ");
MyDV = MyDS.Tables[ "Categories "].DefaultView;
CreateConnection().Close();
return MyDV;
}
public DataView LoadProductDataView()
{
//MyProduct =new DataView();
string SqlStr = "select * from Products ";
MyDataAdapter = new SqlDataAdapter(SqlStr,CreateConnection());
if(CreateConnection().State ==ConnectionState.Closed)
{
CreateConnection().Open();
}
//string data =MyDS.GetXml();
MyDataAdapter.Fill(MyDS, "Product ");
MyProduct =MyDS.Tables[ "Product "].DefaultView;
CreateConnection().Close();
//Response.Write( " <pre> "+ Server.HtmlEncode(data) + " </pre> ");
return MyProduct;
//FilterDate(DataBinder.Eval(Container.DataItem, "CategoryID "))
}

public DataView FilterDate(object CategoryID)
{
//LoadProductDataView().Count.ToString();
MyProduct.RowFilter = "CategoryID= " + Convert.ToInt32(CategoryID);
//LoadProductDataView().RowFilter= "CategoryID= " + Convert.ToInt32(CategoryID);
return MyProduct;

}
我这个是Repeater加DataGrid,希望对你有帮助,呵呵

读书人网 >C#

热点推荐